一、概念
多态指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。
多态意味着父类型的变量可以引用子类型的对象。
使用父类对象的地方都可以使用子类的对象。这就是通常所说的多态。
二、类的继承
(一)父类和子类
使用类来对同一类型的对象建模。不同的类可能会有一些共同的特征和行为,可以在一个通用类中表达这些共同之处,并被其他类所共享。可以定义特定的类继承自通用类。这些特定的类继承通用类中的特征和方法。
(二)继承
1.概念
即子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。
2.好处
提高代码的复用性。类与类之间产生了关系,是多态的前提。
3.格式
class 父类 {
...
}
class 子类 extends 夫类 {
...
}
4.关键字super
关键字super指代父类,可以用于调用父类中的普通方法和构造方法。
关键字super可以用于两种途径:
(1)调用父类的构造方法。
(2)调用父类的普通方法。
5.构造方法链
构造方法可以调用重载的构造方法或父类的构造方法。如果它们都没有被显式的调用,编译器就会自动的将super()作为构造方法的第一条语句。构造一个子类的对象时,子类的构造方法会在完成自己的任务之前,先调用它的父类的构造方法;如果父类继承自其他类,那么父类的构造方法又会在完成自己的任务之前,调用它自己的父类的构造方法。这个过程持续到沿着这个继承层次结构的最后一个构造方法被调用为止。这就是构造方法链。
三、方法重写与重载
(一)方法重写
有时,子类从父类继承方法需要修改父类中定义的方法的实现,这称为方法重写(Method Overriding)。
为避免错误,可以使用重写标注,即在要子类的方法前面放一个@Override。
(二)方法重载
方法重载就是方法名称重复,加载参数不同。
(三)总结
重载意味着使用相同的名字但是不同的签名来定义多个方法。重写意味着在子类中提供一个对方法的新的实现
四、对象转换
一个对象的引用可以类型转换为另外一个对象的引用,这称为对象转换。
(一)向上转换(Upcasting)
总是可以将一个子类的实例转换为一个父类的变量
(二)向下转换(Downcasting)
如果要转换的父类对象不是子类的一个实例,就会运行异常。
在尝试转换之前确保该对象是另一个对象的实例。可以利用操作符instanceof实现。
格式如下:
void someMethod(Object myObject) {
if (myObject instanceof Circle) {
...
}
}
五、动态绑定
一个变量必须被声明为某种类型,这个类型称为它的声明类型;变量引用的对象的实际类为变量的实际类型。一个变量调用的方法由它的实际类型决定。