在调用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();
}
}
以下示意性的代码:
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();
}
}
解决方案 »
- 谁能帮我做个题呀,谢谢! 关于RandomAccessFile的.
- JSP中嵌套struts标签的问题
- Apache James 邮件服务器怎样解决反垃圾邮件和防病毒问题!急!(UP者有分)
- 请高手帮我解决一下JFielChooser的错误 送分哦!!!
- 关于用java语言连接SQL Server
- 请问用java对sql server2000进行查询、添加、删除等操作应如何写
- 能采用汉字作为数据库的字段名称吗?
- 请求高手点拨一个JavaSE的基功问题
- 怎样在JBULIDER中使用滚轮啊?
- 我毕业设计要用java做一个软件,能够实现信息隐藏技术,谁有这方面的经验?谢谢。100分
- java自定义的线程类对象和Thread类对象是什么关系?
- 新手有问题啦。。。谢谢。。。。
super.addAll();
}
这样只是说 调用父类的addAll 方法但是父类在调用这个addAll的时候会调用add 这个时候 因为多态 所以调用SubClass的add
super.addAll();
System.out.println(super.getClass());
System.out.println(super.hashCode());
System.out.println(this.hashCode());
}你可以打印出super的实际是属于SubClass的对象的一个引用
实际上super与this是同一个对象