当多个类中出现相同功能,但是功能主体不同时,我们可以向上抽取,只抽取功能定义,而不抽取功能主体。
抽象类的特点
- 抽象方法一定在抽象类中。
- 抽象方法和抽象类都必须被abstract关键字修饰。
- 抽象类不可以用new创建对象,因为调用抽象方法没有意义。
- 抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,才能建立子类对象调用。(如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。)
abstract class Student { abstract void study(); abstract void read(); void sleep() { System.out.println("sleep"); } } class StudentClass1 extends Student { void study() { System.out.println("study Java"); } void read() { System.out.println("read book"); } } class StudentClass2 extends Student { void study() { System.out.println("study python"); } void read() { System.out.println("study magazine"); } } public class AbstractDemo { public static void main(String[] args) { StudentClass1 s1 = new StudentClass1(); StudentClass2 s2 = new StudentClass2(); s1.study(); s1.read(); s1.sleep(); s2.study(); s2.read(); s2.sleep(); } }
运行结果
study Java read book sleep study python study magazine sleep
StudentClass1类和StudentClass2类分别对Student类中所有抽象方法都进行了复写。
抽象类中可以不定义抽象方法,仅仅是为了不让该类建立对象
来源:https://www.cnblogs.com/liyuxin2/p/12307592.html