黑马程序员技术交流社区
标题:
抽象的函数一定要在抽象类里面,
[打印本页]
作者:
张小贝
时间:
2014-1-8 06:56
标题:
抽象的函数一定要在抽象类里面,
一个抽象类的子类也是一个抽象类可是抽象类又不能创建对象,我晕了abstract 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();
}
abstract 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");
}
}
}
abstract class Pro extends Employee {
Pro(String name,String id, double pay){
super(name, id , pay);
}
public void work(){
System.out.println("pro work");
}
}
public class Day7{
public static void main(String[] args){
Pro p = new Pro("zhangsan","008",8000.00);
}
不会调了。。。
作者:
松毛
时间:
2014-1-8 08:36
我想你的代码中Employee应该是抽取出来的最终类吧。所以在代码中只有它使用abstract修饰成抽象类。所以该类是不能创建对象的。
而Manager、Employee是它的子类,继承了Employee,所以它们都得实现抽象类Employee中的抽象方法work。它们就可以成为普通类,所以是不需要用abstract修饰(你用abstract修饰了的话,它们就还是抽象类,所以是不能够创建对象的),可以直接创建对象并调用其方法。
abstract 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{ //Manager不需要用abstract修饰,它的内部已经没有抽象方法了。
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也不需要用abstract修饰了;
public Pro(String name,String id, double pay){
super(name, id , pay);
}
public void work(){
System.out.println("pro work");
}
}
public class Test14{
public static void main(String[] args){
Pro p = new Pro("zhangsan","008",8000.00); //创建对象;
p.work(); //调用其方法。
Manager man = new Manager("li", "007", 5000, 1000);
man.work();
}
}
复制代码
作者:
浮出一个美
时间:
2014-1-8 08:37
子类一般不用再抽象了,直接把父类的方法实现即可。
作者:
贺利英
时间:
2014-1-8 09:23
父类是抽象的即可,因为父类是子类抽取出来的共同的功能,但是功能主体不同,所以父类用抽象的,但是子类就不用再抽象了,因为子类是具体实现这些功能的,即将父类中的函数进行复写,所以,子类不用用抽象了。
作者:
不冬眠的蚂蚁
时间:
2014-1-8 09:45
抽象类是不能创建对象 所以要调用就找他的实现非抽象子类 用子类来声明对象 然后再调用相应方法
作者:
daoyua
时间:
2014-1-9 10:20
抽象类没法加建立对象,抽象类的子类,如果没实现所有的方法还是抽象类的话也没法建立对象,所以你可以弄个子类把所有方法实现了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2