日期:2014-05-20  浏览次数:20668 次

急急急,劳烦各位大虾帮下忙,关于如何在子类中访问父类中的私有属性!
刚做了个关于雇员的小练习,因为在经理类中多了一个属性,当我想把那些数据打印出来的时候,发现
访问不到父类中的私有属性的数据,请问各位大虾如何解决这个问题,如果可以的话,麻烦把super的用法
帮我说说哈,不是很熟悉,小菜鸟一只多多担待!程序如下:
//-------------------------------------------------------
/*
练习5:雇员示例:
需求:公司中程序员有姓名,工号,薪水,工作内容。
项目经理除了有姓名,工号,薪水,还有奖金,工作内容。
对给出需求进行数据建模。

程序员:
属性:姓名,工号,薪水。
行为:工作内容。

项目经理:
属性:姓名,工号,薪水,奖金。
行为:工作内容。

程序员和经理之间是不存在所属关系的。
但是他们之间有共性。
可以抽取到雇员。
雇员:
属性:姓名,工号,薪水。
行为:工作内容。
思路:
1.程序员和项目经理都是公司的员工,新建程序员的类和项目经理的类,那么他们的父类则新建一个雇员类
因为程序员和经理并不是所需关系,所以不能仅仅为了方便使用他们的方法而让他们盲目继承
2.程序员和经理都具有的属性是:姓名,工号,薪水,行为的方式是一样的不过做的内容不同,那么可以建一个抽象方法代表他们的行为
在子类中覆盖该方法即可,因为方法抽象,所以雇员类应该也是抽象类
*/
abstract class Employee
{
private String name;//属性,姓名
private String num;//属性:工号
private  int pay;//属性: 薪水

//构造函数初始化
Employee(String name,String num,int pay)
{
this.name = name;
this.num = num;
this.pay = pay;
}

String getName()
{
return name;
}

String getNum()
{
return num;
}

int getPay()
{
return pay;
}

//打印这些数据
void sop()
{
System.out.println("name : " + this.name + "   " + "num : " + 
this.num + "   " + "pay : " +this.pay);
}

//抽象方法,行为
abstract void show();
}

class Manager extends Employee
{
//因为经理多了个属性:奖金
private int reward;
//初始化
Manager(String name,String num,int pay,int reward)
{
super(name,num,pay);
this.reward = reward;
}

//覆盖sop方法
//void sop()
//{
//1 System.out.println("name : " + super.name + "   " + "num : " + 
//1 super.num + "   " + "pay : " +super.pay +
                                  "    " + "reward" + this.reward);
//1     因为父类中的属性是私有的,所以这样访问是错误的
//2     要访问父类中的私有属性,尝试利用get方法来获取
//2  System.out.println("name : " + super.getName + "   " + "num : " + 
//2 super.getNum + "   " + "pay : " +super.getPay +
//2 "    " + "reward" + this.reward);
//暂时无法解决这个问题,重新定义一个方法打印奖金
//}

void sop1()
{
System.out.println("reward : " + reward);
}
//
        //就是这个问题,如何在子类中访问父类中的私有数据呢?
void show()
{
System.out.println("Manage!");
}

}

class Progrmmer extends Employee
{
Progrmmer(String name,String num,int pay)
{
super(name,num,pay);
}

void show()
{
System.out.println("knock code!");
}
}

class ExtendsTest
{
public static void main(String[] args)