多态

父类的引用指向子类的类型

Father f = new Son(); 

而能执行的方法只看左边的类型.

父类可以指向子类,但不能调用子类独有的方法

如果非要调用,可以进行强制类型转换.


注意事项:

  1. 多态是方法的多态,属性没有多态

  2. 多态必须在父子类型之间,否则会类型转换异常

  3. 如果方法未重写,则执行左边类型的方法.

    如果方法重写了,那么就执行子类的方法

  4. 父类引用指向子类对象.

无法重写的方法:

static #属于类
final #属于常量
private #私有化,无法被其他类访问
//以上修饰符修饰过的方法都不可以重写

instanceof

可以判断右侧类型和其他类型的亲属关系

Father f= new Grandson();

System.out.println(f instanceof Grandson);//true
System.out.println(f instanceof Son);//true
System.out.println(f instanceof String);//false
System.out.println(f instanceof Grandaughter);//false

#有父子类亲属关系为真,兄弟和陌生人为假

若左侧和其他类型无父子/祖孙等亲属关系,则会报错↓

a instanceof b

能不能编译通过:a与b是否为父子类


强制类型转换

父类无法直接调用子类独有的方法

但可以通过强制类型转换来调用

Father f = new Son();

#法一:借用中间变量
Son s = (Son) f;
s.show();

#法二:合并成一句话
((Son) f).show();

当子类型转换为父类(自动 无需强制)时,可能会丢失自己拥有的方法


注意点:

  1. 只能由父类的引用指向子类的对象
  2. 子类转父类,向上转型,自动
  3. 父类转子类,向下转型,强制
  4. 优点在于方便了方法的调用,减少了重复的代码
Posted on 2025-10-16 20:51  miloandmicah  阅读(0)  评论(0)    收藏  举报