JAVA 继承

[复制链接]
查看11 | 回复1 | 2011-6-28 11:27:18 | 显示全部楼层 |阅读模式
我这里有个程序不是很理解,能否解答一下。
class Father{

int moneyHK=200;
}
class Son extends Father{

public void changMoneyHK(int x){

moneyHK=x;

System.out.println("父亲的港币当前的值是:"+super.moneyHK);

}
}
public class f{

public static void main(String args[]){

Son son=new Son();

son.changMoneyHK(666);

System.out.println("儿子的港币是继承的属性,当前的值是:"+son.moneyHK);

Father father=new Father();

System.out.println("父亲的港币:"+father.moneyHK);

}
}

我利用son.changMoneyHK是否会修改父类中的成员变量变成666?如果说没有修改,super.moneyHK应该是200啊,怎么会是666?如果说修改了,那我实例化出的father它的moneyHK应该是666啊,但是却又是200.
为什么我的super.moneyHK和father.moneyHK会是不同的数?
到底通过子类来修改继承来的成员变量..父亲的成员变量的值是否会变啊?

回复

使用道具 举报

千问 | 2011-6-28 11:27:18 | 显示全部楼层
这个你是被结果迷惑了哦,你再实例化一个父类对象,显示出它的moneyHK的值来,你就会发现子类并没有改变父类成员变量的值哦 super是对父类对象的一个引用,但是你这个程序里面并没有父类对象呀,它引用谁呢?结果引用了它自己,也就是子类对象,子类对象可以自动转换为父类对象的,就好像short类型的整型值可以自动转换为int进行运算一样。你把super改为this也是一样的(this是对当前自身对象的引用)所以,如果你真的想通过子类来改变父类的成员变量值也可以,在父类的那个成员变量前加个static修饰词 ,这个时候你会发现就算实例化一个新的父类对象,显示出它的值就是666了。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行