首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请问关于method override

2012-01-13 
请教关于method override在调用SubClass中的addAll()时,结果输出为 sub 。SuperClass中的addAll()调用的

请教关于method override
在调用SubClass中的addAll()时,结果输出为 "sub "。SuperClass中的addAll()调用的是super.addAll(),按我的理解尽管super.add()被重写,super.addAll()应该调用super.add(),而结果却不是这样。谁给解释一下?
以下示意性的代码:
class   SuperClass   {
        public   add()   {
                System.out.println( "super ");
        }

        public   addAll()   {
                add();
        }
}

class   SubClass   extends   SuperClass   {
        public   add()   {//overriding
                System.out.println( "sub ");
        }

        public   addAll()   {//overriding
                super.addAll();
        }
}

[解决办法]
public void addAll() {//overriding
super.addAll();
System.out.println(super.getClass());
System.out.println(super.hashCode());
System.out.println(this.hashCode());
}

你可以打印出super的实际是属于SubClass的对象的一个引用
实际上super与this是同一个对象

热点排行