黑马程序员技术交流社区

标题: 关于抽象继承的问题 [打印本页]

作者: 佛山java爱好者    时间: 2014-7-21 21:22
标题: 关于抽象继承的问题
//员工包含三个属性:姓名,id,工资,经理也是员工,除了包含员工的属性外,还有一个奖金属性,请使用继思想设计出员工和经理类,要求类中提供必要的方法
class Employee
{
        private String name;
        private String id;
        private double pay;

        Employee(String name,String id,double pay)
        {
          this.name=name;
          this.id=id;
          this.pay=pay;
        }
        public abstract void work();
}

class Manager extends Employee
{
        private int bonus;
        Manager(String name,String id,double pay,int bonus)
        {
           super(name,id,pay);
           this.bonus=bonus;
        }
        public void work()
        {
          System.out.println("manager work");
        }
}

class pro extends Employee
{
        pro(String name,String id,double pay)
        {
           super(name,id,pay);
        }
        public void work()
        {
           System.out.println("pro work");
        }
}

class  workerDemo
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

编译时候提示Employee不是抽象的,不能覆盖抽象work()方法,是哪里出问题啦?
作者: 依然超级赛亚人    时间: 2014-7-21 22:02
这...这明显是因为定义Employee这个类的时候没有加abstract修饰嘛,在第一句代码class Employee的前面加上abstract(也就是abstract class Employee)应该就行了吧?
作者: doubandddk    时间: 2014-7-21 22:22
这个是考试题么
作者: 杨冬冬    时间: 2014-7-21 23:17
在class Employee之前加个abstract就行了,你的代码太不规范了,好好学学代码规范吧
作者: rolling-stone    时间: 2014-7-21 23:36
因为类中有抽象函数的时候,它的本身的这个类也必须是抽象的.也就是说一个类里面如果有abstract来修饰方法,这个类前面也必须有abstract,所以楼主你把class Employee前面加上abstract就行了
还有我记得你这个代码少写了一个Manager类吧.
class Manager extends Employee
{
        Manager(String name,String id,double money,double bouns)
        {
                super(name,id,money);
                this.bouns = bouns;
        }
        public void work()
        {
                System.out.println("Manager Work");
        }
}
class pro extends Manager
{
        pro(String name,String id,double money)
        {
                super(name,id,money);
        }
        public void work()
        {
                System.out.println("pro Work");
        }
}
类pro不是继承employee而是继承manager类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2