首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

Java中的上转型对象解决方案

2013-03-26 
Java中的上转型对象父类package Testpublic class Father {String strFatherFather(){System.out.pri

Java中的上转型对象
父类
package Test;

public class Father {

String str="Father";
Father(){
System.out.println("Father Construct");
};
public void methodF(){
System.out.println("Father method");
}
}

子类

package Test;

public class Child extends Father{
String str="Child";
Child(){
System.out.println("Child Construct");
};
public void methodF(){
System.out.println("Child Override Father method");
}
public static void main(String[] arg){
Child c1=new Child();
c1.methodF();
System.out.println("子类的str:"+c1.str);
Father f1=new Father();
f1.methodF();
System.out.println("父类的str:"+f1.str);
f1=c1;
System.out.println("f1=c1的str:"+f1.str);//为什么不是Child?f1已经指向了c1了啊!
System.out.println("f1=c1后的method");
f1.methodF();
Father f2=new Child();
System.out.println("Father f=new Child()的str:"+f2.str);//为什么不是Child?f2已经指向了Child对象了啊!

}
}

[解决办法]
楼主可能弄混淆了一个问题:

函数是有多态概念的,也即是会调用子类所“重写”的函数。

变量没有多态概念的!因为变量不存在“重写”这个概念。
[解决办法]
绝对记错了。。。

你换个方式理解这个问题,如果变量能被“重写”,那父类的运行环境就将受到非常严重的威胁。

或者你再换个想法:
父类: private int num;
子类: public int num;
如何?

热点排行