public class Twisted {
private String name; Twisted (String name) {
this.name = name;
} private String name() {
return name;
} private void reproduce() {
new Twisted ("reproduce") {
void printName() {
System.out.println(name());
}
}.printName();
} public static void main(String[] args) {
new Twisted ("main").reproduce();
}
}输出 main 还是 reproduce 呢???
解决方案 »
- http://www.java-home.com重新上线,诚邀您的加入!
- 一个java与javaScript功能类似的功能问题
- 向大家请教"由于某些中间构造函数调用,没有任何类型 Outer1 的外层实例可用"
- 请教有关java写文件时 回车换行符不能正常显示的问题
- JAVA 二维数组作为方法参数
- 并请高手指教,如何实现继承一个抽象类!
- 关于java SWT 的Shell窗体如何添加窗体阴影效果(不含系统样式)求示例
- 怎么实现对动态表达式的计算?(急)
- 用Applet小程序怎么绘画出sin函数的曲线啊!
- 关于JAVA中简单连接数据库的问题?
- 高手进来下,帮我解决一个问题,对你们来讲很easy的
- 一个java程序有点问题
这和继承有什么关系?
==============
回复内容太短了!
==============
回复内容太短了!
System.out.println(name());
这里的name()是new Twisted ("main").name()
new Twisted ("main")实例中的name就是main
void printName() {
System.out.println(name());
}
}
是类Twisted的一个子类,大家看一下CLASS文件,
而private 是类保护的,
所以大家可以测试一下:
private String name() {
return name;
}
方法有private 和没有 private 的区别.
还是跑了一遍,csdn上强人多啊.
main 看了一遍不知道答案,拿过去运行一下才出来这个答案
======================================================================package com.sysdynamic.test;public class Twisted {
private String name; Twisted(String name) {
this.name = name;
System.out.println(name + " =======");
} private String name() {
System.out.println(name+" &&&&&&&");
return name;
} private void reproduce() {
new Twisted("reproduce") { void printName() {
System.out.println(name+" ^^^^^^");
System.out.println(name());
}
}.printName();
} public static void main(String[] args) {
new Twisted("main").reproduce();
}
}//main =======
//reproduce =======
//main ^^^^^^
//main &&&&&&&
//main
基类reproduce()方法里面一个匿名内部类 new Twisted ("reproduce")继承基类
但是添加了printName()方法 并调用````
printName()通过 System.out.println(name())调基类name())方法输出
这里应该是两个实例(应该是基类new子类):基类name="main"; 输出的是main..
如果 new Twisted ("reproduce") {
private String name() {
return name;
}
…………
应该也是输出main吧。。因为实际上new Twisted ("reproduce")就没有name属性。。