抽象类和接口
抽象类:
当定义一个类时,常常需要定义方法来描述类的特征,但有时这些方法现方式是无换确定的。
- 抽象类不能实例化 | 抽象类可以包含抽象方法和抽象访问器 |
- 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承
- 从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
不包含方法体的方法为抽象方法,抽象方法使用abstract关键字修饰。
abstract void shout();
包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需要abstract关键字来修饰即可。
abstract class AAC{ abstract void ab(); } abstract class AAB{ public void ab(){ } }
抽象类是不可以被实例化的。子类实现了父类的抽象方法后,可以正常实例化。并通过实例化对象调用方法。
抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。
接口:
如果一个抽象类中所有方法都是抽象的,则可以将这个类用另外一种方式定义,即接口。
interface AA{ int id=1; void stop(); void run(); }
因为接口中包含默认修饰符:
接口中定义的方法默认使用 public abstract 来修饰,即抽象方法。
接口中变量默认使用 public static final来修饰,即全局变量。
接口可以继承接口,而且支持多重继承