黑马程序员技术交流社区
标题:
关于抽象类
[打印本页]
作者:
透过生活
时间:
2014-1-23 07:40
标题:
关于抽象类
本帖最后由 透过生活 于 2014-2-16 18:48 编辑
/*
看了毕老师的教程,抽象类这个事例讲解,我想知道的是:Empoyee类定义成抽象类,这样对name,id,pay,进行赋初值。抽象类不能new对象,
这样Employee(String name,String id,double pay){}如何初始化
*/
abstract class Employee{
private String name;
private String id;
private double pay;
public abstract void work();
Employee(String name,String id,double pay){
this.name= name;
this.id =id;
this.pay=pay;
}
}
class Manager extends Employee{
private int bouns;
Manager(String name,String id,double pay,int bouns){
super(name,id,pay);
this.bouns=bouns;
}
public void work(){
System.out.println("manager work");
}
}
public class javaAbstract {
public static void main(String args []){
//Employee e = new Employee("透过生活",7,77,777);抽象类不能new对象
}
}
作者:
姜胜凯
时间:
2014-1-23 09:00
本帖最后由 姜胜凯 于 2014-1-23 09:02 编辑
那是需要子类去继承的~~~由子类去初始化父类的构造函数~
下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然
eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
作者:
廉伟杰
时间:
2014-1-23 11:30
Employee e = new Manager(........)这样就可以实现初始化了
作者:
遗忘
时间:
2014-1-23 13:13
姜胜凯 发表于 2014-1-23 09:00
那是需要子类去继承的~~~由子类去初始化父类的构造函数~
下面比较一下两者的语法区别:
不好意思 不小心点了个反对:(
作者:
遗忘
时间:
2014-1-23 13:28
明确一点:抽象类不能被实例化,只能通过子类来实现初始化。
Employee e = new Manager("透过生活",7,77,777);
作者:
darkpiece
时间:
2014-1-23 14:57
Employee e = new Manager("透过生活",7,77,777);
通过父类指向子类对象 实现初始化,说白了通过子类子事先初始化。。貌似叫多态
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2