抽象类
一、产生原因:
当多个类中出现相同功能,但功能主体不同。此时可以向上进行抽取,这时,只抽取功能定义,而不抽取功能主体而形成的
类。
二、特点:
a,抽象方法一定定义在抽象类中;
b,抽象方法和抽象类都必须被adstract关键字修饰;
c,抽象类不可以用new创建对象;
d,抽象类中的方法要被使用,必须有子类复写所有的抽象方法后,建立子类对象来调用。
e,如果子类只覆盖部分抽象方法,则该子类还是抽象类。
三、抽象类不可以实例化
四、抽象类中可以不定义抽象方法,这样做,仅仅是不让该类建立对象。
常见错误:
1,抽象类没有用abstract修饰
myAbstract.java:1: 错误: Employee不是抽象的, 并且未覆盖Employee中的抽象方法work()
2,父类的全部抽象方法被子类都重写
myAbstract.java:26: 错误: Managers不是抽象的, 并且未覆盖Employee中的抽象方法information()
- abstract class Employee
- {
- private String NameStr;
- private String IdStr;
- private double Paypal;
-
- Employee(String name,String id,double pay)
- {
- this.NameStr = name;
- this.IdStr = id;
- this.Paypal = pay;
- }
-
- /*
- public void information()
- {
- System.out.println("We are family!!!!!!!");
- }
- */
-
- //public abstract void information();
- public abstract void work();
-
- }
- class Managers extends Employee
- {
- private double bouns;
-
- Managers(String name,String id,double pay,double bouns)
- {
- super(name,id,pay);
- this.bouns = bouns;
- }
-
- public void work()
- {
- System.out.println("Manager is working!!!!");
- System.out.println("His bouns is "+ this.bouns);
- }
- }
- class Profession extends Employee
- {
- Profession(String name,String id,double pay)
- {
- super(name,id,pay);
- }
-
- public void work()
- {
- System.out.println("Profession is working!!!!");
- }
- }
- public class myAbstract
- {
- public static void main(String[] args)
- {
- Managers mOne = new Managers("Wayne","23",100000.0,30000);
- Profession pOne = new Profession("Bruce","24",9000.0);
-
- mOne.work();
- pOne.work();
- }
- }
复制代码 |
|