由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 关于Java一个小程序的结果
相关主题
相关话题的讨论汇总
话题: xinterface话题: yclass话题: xclass话题: rundemo话题: demo
进入Programming版参与讨论
1 (共1页)
l******7
发帖数: 311
1
我不明白为什么这个程序运行的结果是 “DemoC#" 而不是 “DemoC++”
package poly;
interface XInterface{
public abstract void runDemo();
}
abstract class XClass implements XInterface{
String s="Java";
public abstract void runDemo();
{s="C++";}
}
public class YClass extends XClass implements XInterface{
{s = "C#";}
public void runDemo(){
System.out.println("Demo"+super.s);
}
public static void main(String args[]){
XInterface xi=new YClass();
xi.runDemo();
}
}
b******u
发帖数: 469
2
是YClass的变量

【在 l******7 的大作中提到】
: 我不明白为什么这个程序运行的结果是 “DemoC#" 而不是 “DemoC++”
: package poly;
: interface XInterface{
: public abstract void runDemo();
: }
: abstract class XClass implements XInterface{
: String s="Java";
: public abstract void runDemo();
: {s="C++";}
: }

l******7
发帖数: 311
3
可是用了 super.s,这里super没作用么?

【在 b******u 的大作中提到】
: 是YClass的变量
X****r
发帖数: 3557
4
YClass并没有override XClass里的s。YClass里的{s = "C#";}操作的就是
XClass里的同一个s,所以super.s和s是一回事。
想象一下把XClass里的{s="C++";}和YClass里的{s = "C#";}移到各自的
constructor里就明白了。

【在 l******7 的大作中提到】
: 可是用了 super.s,这里super没作用么?
l******7
发帖数: 311
5
谢谢。

【在 X****r 的大作中提到】
: YClass并没有override XClass里的s。YClass里的{s = "C#";}操作的就是
: XClass里的同一个s,所以super.s和s是一回事。
: 想象一下把XClass里的{s="C++";}和YClass里的{s = "C#";}移到各自的
: constructor里就明白了。

1 (共1页)
进入Programming版参与讨论
相关主题
相关话题的讨论汇总
话题: xinterface话题: yclass话题: xclass话题: rundemo话题: demo