发布于2026-06-24 阅读(0)
扫一扫,手机访问

Animal a = dog.getAnimal();)Dog d = dog.getAnimal();),无需强制转型ClassCastExceptionNumber,子类返回 Integer(Integer 是 Number 的子类)Person,子类返回 Student(Student extends Person)String,子类返回 Integer(无继承关系)Student,子类返回 Person(子类不能返回更宽泛的父类类型)@Override 注解——编译器就是靠它来识别这是重写而非重载的。看个例子:
class Animal { public Animal get() { return new Animal(); } }
class Dog extends Animal {
@Override
public Dog get() { return new Dog(); }
} // ✅ 正确
如果缺了 @Override,或者返回类型写错了,要么编译失败,要么就变成了重载——注意,参数相同返回类型不同的方法不是重载,直接报错,不会静默覆盖。
Animal a = new Dog(); Animal result = a.get();实际执行的仍是
Dog.get(),返回的是 Dog 实例——只是被向上转型为 Animal 类型赋给了 result。你可以随时向下转型(但要确保安全),而用子类引用调用则直接拿到 Dog 类型,更自然、更安全。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8