假设有一个Dog
类如下
public class Dog {
public void bark() {
barkMany(1);
}
public void barkMany(int N) {
for (int i = 0; i < N; i += 1) {
System.out.println("bark");
}
}
}
如果调用bark()
,会执行barkmany(1)
假设现在有一个类VerboseDog
继承Dog
类。
class VerboseDog extends Dog {
@Override
public void barkMany(int N) {
System.out.println("As a verbose dog, I say: ");
for (int i = 0; i < N; i++) {
bark();
}
}
}
如果调用VerboseDog
类实例的barkMany()
方法。会陷入死循环。
原因是继承破坏了封装性。