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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 透过生活 高级黑马   /  2014-1-23 07:40  /  1502 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 透过生活 于 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对象
}
}

5 个回复

倒序浏览
本帖最后由 姜胜凯 于 2014-1-23 09:02 编辑

那是需要子类去继承的~~~由子类去初始化父类的构造函数~
下面比较一下两者的语法区别:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7. 一个类可以实现多个接口,但只能继承一个抽象类。

回复 使用道具 举报 0 1
Employee e = new Manager(........)这样就可以实现初始化了
回复 使用道具 举报
姜胜凯 发表于 2014-1-23 09:00
那是需要子类去继承的~~~由子类去初始化父类的构造函数~
下面比较一下两者的语法区别:

不好意思 不小心点了个反对:(
回复 使用道具 举报
明确一点:抽象类不能被实例化,只能通过子类来实现初始化。
Employee e = new Manager("透过生活",7,77,777);
回复 使用道具 举报
Employee e = new Manager("透过生活",7,77,777);
通过父类指向子类对象 实现初始化,说白了通过子类子事先初始化。。貌似叫多态
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马