假设有一个Dog类如下

    1. public class Dog {
    2. public void bark() {
    3. barkMany(1);
    4. }
    5. public void barkMany(int N) {
    6. for (int i = 0; i < N; i += 1) {
    7. System.out.println("bark");
    8. }
    9. }
    10. }

    如果调用bark(),会执行barkmany(1)

    假设现在有一个类VerboseDog继承Dog类。

    1. class VerboseDog extends Dog {
    2. @Override
    3. public void barkMany(int N) {
    4. System.out.println("As a verbose dog, I say: ");
    5. for (int i = 0; i < N; i++) {
    6. bark();
    7. }
    8. }
    9. }

    如果调用VerboseDog类实例的barkMany()方法。会陷入死循环。
    原因是继承破坏了封装性。