当多个类中出现了相同功能,但是功能主体不同
这时可以进行向上抽取,这时,只抽取功能定义,而不抽取功能主题
注意:抽象类中可以不定义抽象方法,作用是防止该类建立对象
抽象类的特点
- 抽象方法一定定义在抽象类中
- 抽象方法和抽象类都必须被abstract关键字修饰
- 抽象类不可以用new创建对象,因为调用抽象方法没有意义
- 抽象类中的方法要被使用,必须由子类复写其所有抽象方法后,建立子类对象调用,如果子类只覆盖了部分抽象方法,那么子类还是一个抽象类
1 //AbstractDemo 2 abstract class Stduent//抽象方法必须放在抽象类中 3 { 4 abstract void study();//抽象方法 5 //abstract void study1();//抽象方法 6 void sleep()//抽象类可以有抽象方法和非抽象方法 7 { 8 System.out.println("Sleep"); 9 } 10 } 11 12 class BaseStudent extends Student//如果复写抽象方法不完全,任然是抽象类 13 { 14 void study() 15 { 16 System.out.println("base study"); 17 } 18 } 19 20 class AdvStudent extends Student 21 { 22 void study() 23 { 24 System.out.println("adv study"); 25 } 26 } 27 28 class SprintStudent extends Student 29 { 30 void study() 31 { 32 System.out.println("sprint study"); 33 } 34 } 35 36 class AbstractDemo 37 { 38 public static void main(String[] args) 39 { 40 //new Student(); //invalid 41 new BaseStudent().study(); 42 } 43 }