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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 莫运飞 中级黑马   /  2012-4-4 15:44  /  2501 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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("manger 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 Abstract01
{
        public static void main(String[] args)

{
System.out.println("manger work");

}
}

编译后爆:Employee不是抽象的,并且未覆盖Employee中的抽象方法work() class Employee
这时怎么回事??不到懂  怎么处理这个问题? 及给点抽象的说明好吗






6 个回复

倒序浏览
Employee必须是抽象的通过子类来实现扩展,肯定要子类来复写抽象类中的方法 才有意义。你下面的 Manager和 Pro在Employee非抽象的状态下继承并扩展是没有意义的
回复 使用道具 举报
class Employee 你没声明是抽象类,应该是abstract class Employee
回复 使用道具 举报
对头 是 我在Employee类中未使用抽象方法 ,但在该类中的 public abstract void work();使用了抽象,这样就会出现了错误,不抽象的话,下面的扩展也就没有了意义是吗?

回复 使用道具 举报
抽象类类名前面必须加abstract修饰;你上面明显没加!抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类!
回复 使用道具 举报
程旦 来自手机 中级黑马 2012-4-4 23:50:24
地板
你在非抽象类中定义了抽象方法,当然报错啦。。
回复 使用道具 举报
  public abstract void work();所以,你的class Employee应该是抽象的。在前面加个abstract。类中有方法是抽象的,那么该类就该抽象的,不要忘了写abstract,并且在子类继承父类后一定要记得复写父类的功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马