封装性
继承性
extends
// 示例
public class Person {
public void show() {
System.out.println("show");
}
}
public class Student extends Person {
public void test() {
show();
}
}
优点
减少代码冗余,提高了代码的复用性
便于扩展
为之后的多态提供了使用前提
说明
子类可以获取父类中声明的所有的属性和方法
父类中声明为private的属性或方法,子类继承后,仍然认为获取了父类中私有的结构;因为封装性的影响不能直接使用父类的结构而已
如果没有显示声明继承父类,那么此类继承于java.lang.Object类
规定
只支持单继承
支持多层继承
不支持多继承
多态
父类的引用指向子类的对象,也叫向上转型
只适用于方法,不适用于属性;如果调用属性,获取的是父类的属性
Person m = new Man();
Person w = new WoMan();
虚拟方法调用
调用子父类同名同参的方法时,实际执行的是子类重写父类的方法
在编译期只能调用父类中声明的方法,但在运行期间,实际执行的是子类重写父类的方法
使用前提
要有继承关系
子类要重写父类的方法
向下转型
内存中实际上是加载了子类特有的属性和方法,但是由于变量声明为父类类型,导致编译时只能调用父类中声明的属性和方法。子类特有的属性和方法不能调用
如果Man类不是Person 的子类,出现异常ClassCastException
Person p2 = new Man();
Man m2 = (Man) p2;