黑马程序员技术交流社区
标题:
一个关于抽象类和继承的问题
[打印本页]
作者:
sunboy
时间:
2013-12-14 16:42
标题:
一个关于抽象类和继承的问题
/*
请用抽象类体现如下代码:
需求:公司中程序员有姓名,工号,薪水,工作内容。
项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
*/
//定义Worker抽象类
abstract
class Worker
{
private
String name;
private
int number;
private
int pay;
public Worker(){}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setNumber(int number)
{
this.number = number;
}
public int getNumber()
{
return number;
}
public void setPay(int pay)
{
this.pay = pay;
}
public int getPay()
{
return pay;
}
public abstract void show();
public abstract void work();
}
//定义程序员类
class Developer extends Worker
{
public Developer(){}
public void show()
{
System.out.println("姓名:"+
name
+"工号:"+
number
+"薪水:"+
pay
);
}
public void work()
{
System.out.println("程序员编写程序");
}
}
//定义项目经理类
class ProjectManager extends Worker
{
private int reward;
public ProjectManager(){}
public void setReward(int reward)
{
this.reward = reward;
}
public int getReward()
{
return reward;
}
public void show()
{
System.out.println("项目经理:姓名:"+
name
+"工号:"+
number
+"薪水:"+
pay
+"奖金:"+reward);
}
public void work()
{
System.out.println("项目经理负责管理项目开发实施");
}
}
//测试类
class WorkerTest
{
public static void main(String[] args)
{
//程序员
Developer dp = new Developer();
dp.setName("王强");
dp.setNumber(10110);
dp.setPay(5000);
dp.show();
dp.work();
//项目经理
ProjectManager pm = new ProjectManager();
pm.setName("刘东");
pm.setNumber(10001);
pm.setPay(8000);
pm.setReward(10000);
pm.show();
pm.work();
}
}
我们刚学完面向对象,这是我们老师自己出的作业题。
这里父类Worker是个抽象类,它的成员变量时私有的,请问在它的子类中怎么访问这些私有成员啊?
作者:
末末
时间:
2013-12-14 17:58
这是根据你写的改的
public class Demo2 {
public static void main(String[] args)
{
//程序员
Developer dp = new Developer("王强",10110,5000);
dp.work();
dp.show();
//项目经理
ProjectManager pm = new ProjectManager("刘东",10001,8000,10000);
pm.show();
pm.work();
}
}
abstract class Worker
{
private String name;
private int number;
private int pay;
Worker(String name,int number,int pay)
{
this.name=name;
this.number=number;
this.pay=pay;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the number
*/
public int getNumber() {
return number;
}
/**
* @param number the number to set
*/
public void setNumber(int number) {
this.number = number;
}
/**
* @return the pay
*/
public int getPay() {
return pay;
}
/**
* @param pay the pay to set
*/
public void setPay(int pay) {
this.pay = pay;
}
public abstract void show();
public abstract void work();
}
class Developer extends Worker
{
Developer(String name,int number,int pay)
{
super(name,number,pay);
}
public void show()
{
System.out.println("姓名:"+getName()+"工号:"+getNumber()+"薪水:"+getPay());
}
public void work()
{
System.out.println("程序员编写程序");
}
}
class ProjectManager extends Worker
{
private int reward;
ProjectManager(String name,int number,int pay,int reward)
{
super(name,number,pay);
this.reward=reward;
}
/**
* @return the reward
*/
public int getReward() {
return reward;
}
/**
* @param reward the reward to set
*/
public void setReward(int reward) {
this.reward = reward;
}
public void show()
{
System.out.println("姓名:"+getName()+"工号:"+getNumber()+"薪水:"+getPay()+"奖金:"+getReward());
}
public void work()
{
System.out.println("项目经理负责管理项目开发实施");
}
}
复制代码
作者:
sunboy
时间:
2013-12-14 18:45
末末 发表于 2013-12-14 17:58
这是根据你写的改的
还是哥们聪明!不能直接访问父类的成员变量,就直接调用父类的get方法,这是个不错的解决方案!谢了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2