黑马程序员技术交流社区

标题: 关于抽象类 [打印本页]

作者: 透过生活    时间: 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