题目描述classSuper{privateStringname="Super";publicStringgetName(){returnthis.name;}}publicclassSubextendsSuper{privateStringname="Sub";publicstaticvoidmain(String[]args){Subsub=newSub();//SuperSystem.out.println(sub.getName());}}你期待的结果是什么?实际看到的错误信息又是什么?我以为会输出sub,但实际输出了super.我一直以为this指代的是方法的调用者,getName()是sub调用的,所以其中this的应该是sub,那么sub.name应该是sub;但是这很明显错了
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
子类没有重写getName方法,所以调用的getName方法是父类的。在父类的方法里面this.name指向的是父类的name属性的地址。如果子类重写了父类的getName方法,子类的this.name就是sub了。
添加回答
举报
0/150
提交
取消