package com.ldns;
import static java.lang.System.out;
class SuperClass {
public String var = "I'm in SuperClass";
public void ptintMes(){
out.println(var);
}
}class SubClass extends SuperClass {
public String var = "I'm in SubClass";
public void ptintMes(){
out.println(var);
}
}public class StaticDTBDTest {
public static void main(String[] args) {
SuperClass superRef =new SubClass( );
superRef.ptintMes();
System.out.println(superRef.var);
}
}
执行结果:
I'm in SubClass
I'm in SuperClass是不是和你们想的一样?问什么呢?
求解!!!
import static java.lang.System.out;
class SuperClass {
public String var = "I'm in SuperClass";
public void ptintMes(){
out.println(var);
}
}class SubClass extends SuperClass {
public String var = "I'm in SubClass";
public void ptintMes(){
out.println(var);
}
}public class StaticDTBDTest {
public static void main(String[] args) {
SuperClass superRef =new SubClass( );
superRef.ptintMes();
System.out.println(superRef.var);
}
}
执行结果:
I'm in SubClass
I'm in SuperClass是不是和你们想的一样?问什么呢?
求解!!!
解决方案 »
- 怎么样把java编译成exe???
- 循环字符串算法问题(50分只给最佳答案)
- 急急急,求解答!绝对有用
- 怎么知道一个类运行时用到了jdk的哪些类
- delphi系统,现在要用java扩展功能
- jbuilder 9 用 jacob 操作word ,用什么版本的jacob,为什么编绎总说错啊?
- 在sybase的存储过程中生成的临时表(表名前带#),我若在存储过程中显示地用truncate和drop删除时报错,请问是怎么回事?
- 在一个程序里先编译、后执行另外一个.java文件,该怎样写?
- 初学java <<java2核心技术(core java2)>>这本书合适吗?
- 送分的来了:package com.sun.java.swing does not exist!
- 请教大家一个关于DataOutputStream的问题
- 大一新生请教
这里没有问题吗?
为什么superRef 调用的方法是子类重写的方法,用的成员变量不是子类同名的成员变量呢?
希望高手从内存,对象构造上指点小弟的迷茫!!
这里没有问题 的.标准的多态写法. 子类的对象一定也是基类的对象! java中方法是默认多态的.
所以主函数中下面
superRef.ptintMes();
这句自动多态执行的是子类的方法,故打印
I 'm in SubClass System.out.println(superRef.var);
在java中类的数据成员,是不参与多态的
所以superRef.var代表的是基类中的数据成员war而不是子类的中
故结果是I 'm in SuperClass建议楼主看一下thinking in java 3 或者thinking in java4 讲得很清楚的
但是多态只是针对方法的,并没有说属性,superRef的类型是SuperClass,所以访问属性的时候,访问的是自身的var。因此后面一个就打印的是I 'm in SuperClass。汗,楼主的结贴率!