理解:同一个对象引用在不同的地方代表不同的实现;
1多态的前提:
            A:有继承或者实现关系。
           B:有方法重写。
            C:有父类或者父接口引用指向子类对象。

2分类:
具体类多态

class Son extends Father{}
Father father=new Son()

抽象类多态

                abstract class Father {}
                class Son extends Father {}
                Father father=new Son()

接口多态

                interface Father {}
                class Son implements Father {}
                Father father=new Son()

3多态中的成员访问特点
A:成员变量
            编译看左边,运行看左边
B:构造方法
           子类的构造都会默认访问父类构造
C:成员方法
           编译看左边,运行看右边
D:静态方法
           编译看左边,运行看左边

4多态的内存执行顺序
Father father=new Son()
1:在栈中为Father father分配内存空间
2:在堆中为new Son()分配内存空间
3:在堆中对Father 成员变量初始化,并获取方法区Father 成员方法的内存地址
4:在堆中对Son成员变量初始化,并获取方法区Son成员方法的内存地址
5:最后将new son()的内存地址给对象引用father

posted on 2017-04-02 15:32  2637282556  阅读(133)  评论(0编辑  收藏  举报