A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwj123 金牌黑马   /  2014-12-7 21:54  /  966 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
假如我们现在需要对一个系统对员工进行建模
员工包括3个属性:name id 工资
经理也是员工,除了有员工的基本属性之后,还有一个bonus属性
请使用继承的思想设计出员工类和经理类,要求类中必须定义具体的方法供
外部访问
*/

/*问题是:我想在main中获取Pro对象之后,调用 pro.work();但是它显示不能引用父类的私有方法
如果我要在子类中获取到这些属性的话需要怎么做

*/
abstract class Employee
{
    private String name;
    private String id;
    private double sal;
    Employee(String name,String id,double sal)
    {
        this.name = name;
        this.id = id;
        this.sal = sal;
    }
    //每个员工都需要进行工作,但是普通员工和经理的工作内容不一样,都是属于员工
    public abstract void work();
}
class Manager extends Employee
{
    private int bonus;
    Manager(String name, String id, double sal, int bonus) {
        super(name,id,sal);
        this.bonus = bonus;
    }
    public void work() {
        System.out.println("Manager work...");
    }
}
class Pro extends Employee
{   
    Pro(String name, String id, double sal) {
        super(name,id,sal);
    }
    public void work() {
        System.out.println("编号:"+id+"名字:"+name+"工资"+sal+":work...");
    }
}
public class AbstractTest
{
    public static void main(String[] args)
    {
        Employee pro = new Pro("lisi","开发部-01",8200);
        pro.work();
    }
}


评分

参与人数 1黑马币 +50 收起 理由
滔哥 + 50

查看全部评分

4 个回复

倒序浏览
“Employee pro = new Pro("lisi","开发部-01",8200);”这一句中,你定义的是一个父类的引用变量:Employee,而指向了一个子类的对象new Pro();所以pro.work()中的work(),是父类中的work(),不能被使用。这个问题等你看了第八天的视频:面向对象之多态,你就明白啦!
回复 使用道具 举报
不好意思,刚才理解错了,你将父类中的成员变量定义为私有,子类是无法继承的!
回复 使用道具 举报
zhaozhao 发表于 2014-12-8 12:26
不好意思,刚才理解错了,你将父类中的成员变量定义为私有,子类是无法继承的! ...

如果想要在子类中去使用的话需要怎么修改代码?
回复 使用道具 举报
把父类中成员变量的修饰符private,去掉!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马