黑马程序员技术交流社区

标题: 子父类方法调用顺序问题 [打印本页]

作者: 江楠大盗    时间: 2016-8-22 21:52
标题: 子父类方法调用顺序问题
class Test2_Polymorphic {
        public static void main(String[] args) {
                A a = new B();
                a.show();
        }
}
class A {
        public void show() {
                show2();
        }
        public void show2() {
                System.out.println("我是父类的show2输出");
        }
}
class B extends A {
        public void show() {
                super.show();
        }
        public void show2() {
                System.out.println("我是子类的show2输出");
        }
}
代码如上,为什么super.show()方法调用父类的show方法后,在方法内部不是就近调用父类的show2方法输出“我是父类的show2输出”,而是调用子类的show2方法输出“我是子类的show2输出”???


作者: cg1693378787    时间: 2016-8-24 03:08
(首先:不确定准确)1.先加载B的对象中先根据子类B隐藏构造中的Super访问父类中的构造show()——书或者教程中说是动态捆绑(暂且理解这是java制定的像数学中1+1等于2的道理一样)——访问子类中的show()【实质产生的是子类对象】
2.我通常会认为:在创建子类对象时候,这个对象会将子类中及父类中所有属性及行为不交集部分(交集的子类优先)加载到子类对象中,然后再通过面向对象的思路来理解可能更符合面向对象的思想(抽象到实例),
作者: 水月灬清影    时间: 2016-8-24 08:51
方法重写了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2