黑马程序员技术交流社区

标题: 多态当中成员方法的问题 [打印本页]

作者: tujiu888    时间: 2016-1-21 17:41
标题: 多态当中成员方法的问题
class Test {
        public static void main(String[] args) {
                Test t = new A();
                t.xx();
                t.bb();
               
        }
        private void xx() {
                System.out.println("Hello!");
        }
        void bb() {
                System.out.println("22222222222222222");
        }
       
}


class A extends Test {
        void xx() {
                System.out.println("1112222");
                System.out.println("Hello World!");
        }
        void bb() {
                System.out.println("11111111111111");
        }
}
这种情况下执行为何看的是右边, 不是编译看左边,执行看右边! 如果私有,那么编译应该是报错的,为何也没有报错
作者: 黑色皮肤的马    时间: 2016-1-21 20:26
A是Test的子类,其中 void bb() 是重写父类的方法,void xx()A类的特有方法,因为父类的 void xx() 方法是私有的,不可以重写。Test t = new A();是多态,编译看左边,父类既有xx方法又有bb方法,所以不会报错,子类也是具有这两个方法,所以运行的时候都是运行的子类的这两个方法。
作者: zhanganping    时间: 2016-1-22 00:18
1楼正解学会了,最重要分析好classA中的voidxx()方法
作者: a337136395    时间: 2016-1-22 12:41
顺便也学习了  ~~




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