关于多态中成员变量的变化

yiruanban 2014-04-17 05:32:50
class Fu{
int num = 5;
void show(){
System.out.println("Fu show "+this.num);
}
}
class Zi extends Fu{
int num = 6;
}

public class Test {
public static void main(String[] args) {
Fu f = new Zi();
f.show();

}
}
我想问System.out.println("Fu show "+this.num);中的this为什么指向的是Fu类对象呢,运行的时候不是把Fu类的方法继承过来的嘛!
...全文
167 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
小张hold 2014-04-17
  • 打赏
  • 举报
回复
应该是你的子类没有对父类的方法进行重写吧,所以调用的时候,还是父类的方法
Magical茏 2014-04-17
  • 打赏
  • 举报
回复
引用 5 楼 sc6231565 的回复:
[quote=引用 4 楼 yiruanban 的回复:] 这时会有Fu类对象吗,不是只创建了子类对象吗
创建子类对象前,会先创建父类对象
class Fu {
	Fu() {
		System.out.println("创建父类对象");
	}
}

class Zi extends Fu {
	Zi() {
		super();  //这句话省不省略,输出结果都一样,省略了,JVM会自动给你加上;子类构造时,会首先调用父类的构造函数
		System.out.println("创建子类对象");
	}
}

public class test {
	public static void main(String[] args) {
		Fu f = new Zi();
	}
}
[/quote] 输出为: 创建父类对象 创建子类对象
Magical茏 2014-04-17
  • 打赏
  • 举报
回复
引用 4 楼 yiruanban 的回复:
这时会有Fu类对象吗,不是只创建了子类对象吗
创建子类对象前,会先创建父类对象
class Fu {
	Fu() {
		System.out.println("创建父类对象");
	}
}

class Zi extends Fu {
	Zi() {
		super();  //这句话省不省略,输出结果都一样,省略了,JVM会自动给你加上;子类构造时,会首先调用父类的构造函数
		System.out.println("创建子类对象");
	}
}

public class test {
	public static void main(String[] args) {
		Fu f = new Zi();
	}
}
yiruanban 2014-04-17
  • 打赏
  • 举报
回复
这时会有Fu类对象吗,不是只创建了子类对象吗
-江沐风- 2014-04-17
  • 打赏
  • 举报
回复
引用 2 楼 yiruanban 的回复:
Fu f = new Zi();不是通过父类引用指向子类对象吗?如果是5的话不就是父类的对象了吗?
f的确是父类引用指向子类对象;
class Fu
{
	int num = 5;

	void show() //第三步,打印,this,指的是当前对象Fu
	{
		System.out.println("Fu show " + this.num);
	}
}

class Zi extends Fu
{
	int num = 6;
}

public class Test
{
	public static void main(String[] args)
	{
		Fu f = new Zi();//第一步,调用构造方法,没有,默认;
		f.show();//第二步,调用f的show方法,但Zi本身没有重写Fu的show方法,所以调用Fu的show方法,这是继承;

	}
}
yiruanban 2014-04-17
  • 打赏
  • 举报
回复
Fu f = new Zi();不是通过父类引用指向子类对象吗?如果是5的话不就是父类的对象了吗?
-江沐风- 2014-04-17
  • 打赏
  • 举报
回复
this指当前对象,应该是输出5吧;

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧