X****r 发帖数: 3557 | 1 YClass并没有override XClass里的s。YClass里的{s = "C#";}操作的就是
XClass里的同一个s,所以super.s和s是一回事。
想象一下把XClass里的{s="C++";}和YClass里的{s = "C#";}移到各自的
constructor里就明白了。 |
|
l******7 发帖数: 311 | 2 我不明白为什么这个程序运行的结果是 “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();
}
} |
|
|