Thinking In Java 第八章 多态

1、多态:也称作后期绑定、动态绑定、或运行时绑定。

2、后期绑定:运行时根据对象类型进行绑定。后期绑定也叫动态绑定或运行时绑定。Java中除了static方法和final方法之外,其他所有的方法都是后期绑定。

3、私有方法默认是final的,无法被重写。

4、域与静态方法不具备多态性。只有普通方法调用可以是多态的。

5、组合、继承中构造器的调用顺序:

<1>调用基类构造器。

<2>按声明顺序调用成员的初始化方法。

<3>调用导出类构造器的主体。

class Meal {
    Meal() {
        System.out.println("Meal()");
    }
}

class Bread {
    Bread() {
        System.out.println("Bread()");
    }
}

class Cheese {
    Cheese() {
        System.out.println("Cheese()");
    }
}

class Lettuce {
    Lettuce() {
        System.out.println("Lettuce()");
    }
}

class Lunch extends Meal {
    Lunch() {
        System.out.println("Lunch()");
    }
}

class PortableLunch extends Lunch {
    PortableLunch() {
        System.out.println("PortableLunch()");
    }
}

public class Sandwich extends PortableLunch {

    private Bread b = new Bread();
    private Cheese c = new Cheese();
    private Lettuce l = new Lettuce();

    public Sandwich() {
        System.out.println("Sandwich()");
    }

    public static void main(String[] args) {
        new Sandwich();
    }
}

6、构造动作一经发生,那么对象所有部分的全体成员都会得到构建。

7、继承中,对象销毁的顺序应该和初始化顺序相反。对于字段,则意味着与声明的顺序相反。

8、构造器内部多态方法的行为。初始化实际过程:

<1>在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零。

<2>调用基类构造器。

<3>按照声明顺序调用成员的初始化方法。

<4>调用导出类的初始化主体。

9、在构造器内部唯一能够安全调用的方法是基类中的final方法(也适用于private方法,它们自动属于final方法)。这些方法不会被覆盖。

10、协变返回类型:导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型,即可以返回更具体的类型。

猜你喜欢

转载自blog.csdn.net/weixin_39306760/article/details/87876090