抽象类和抽象方法:
-
抽象类(abstract class):
- 用于表示不完整的类,不能被实例化。
- 可以包含普通的成员变量和成员方法,也可以包含抽象方法。
- 抽象方法是没有具体实现的方法,用
abstract关键字修饰。
-
抽象方法(abstract method):
- 用于表示不完整的方法,只有声明,没有实现。
- 只能存在于抽象类中,用
abstract关键字修饰。 - 子类必须实现抽象类中的所有抽象方法。
-
抽象类的特点:
- 抽象类中可以有普通方法,也可以没有抽象方法。
- 抽象类不能被实例化,但可以被子类继承。
接口:
-
接口(interface):
- 用于定义一组抽象方法的集合,不包含实例变量。
- 接口中的方法默认是抽象的,不需要使用
abstract关键字。 - 可以包含常量,常量使用
public static final修饰。
-
默认方法(default method):
- JDK 8引入,默认方法允许在接口中定义具有默认实现的方法。
- 使用
default关键字修饰。
-
静态方法(static method):
- JDK 8引入,允许在接口中定义静态方法。
- 使用
static关键字修饰。
-
接口的特点:
- 一个类可以实现多个接口。
- 接口之间可以存在多继承关系。
- 接口提供了一种实现多继承的机制。
多态:
-
多态:
- 同一个类的同一个方法在不同的对象上产生不同的行为。
- 通过父类的引用指向子类的对象,实现多态。
- 运行时动态绑定。
-
向上转型:
- 将子类的实例赋值给父类的引用。
- 父类引用可以调用子类重写的方法。
-
向下转型:
- 将父类的引用转换为子类的引用。
- 需要使用强制类型转换。
- 需要在转换之前使用
instanceof判断类型。
-
instanceof 运算符:
- 用于判断对象是否属于某个类或实现了某个接口。
- 返回
true或false。