java基础-类的三大特征

2024-03-08

封装性

继承性

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;


{/if}