Java类继承与多态问题:子类覆盖父方法示例及陷阱
在Java编程中,类的继承和多态是两个重要的概念。
继承:
- 子类可以从父类继承属性(数据成员)和方法。
- 示例:
```java
// 父类
class Animal {
void eat() {
}System.out.println("Animal is eating");
}
// 子类
class Dog extends Animal {// 子类覆盖父方法
@Override
void eat() {
System.out.println("Dog is eating");
}
}
```- 多态:
- 多态是指一个引用可以指向不同类型的对象,而调用方法时能自动适应其实际类型进行操作。
- 通过继承和接口实现。
陷阱:
- 当子类覆盖父类的方法时,如果在父类或子类的其他地方直接调用父类的方法,可能会导致无法预期的行为,需要使用
this
关键字或者显式调用子类方法。
// 错误示例
Animal myAnimal = new Dog(); // 创建Dog对象,但类型仍为Animal
myAnimal.eat(); // 这会直接调用Animal的eat()方法,导致错误行为
// 正确示例
myAnimal = myAnimal; // 更新引用类型为Dog
myAnimal.eat(); // 这会调用Dog的eat()方法,正确实现多态
还没有评论,来说两句吧...