为了账号安全,请及时绑定邮箱和手机立即绑定

大神来看看

public class Bus {//汽车类
	int seat;//座位数
	float price;
	public void showSeat(){
		this.seat=47;
		System.out.println("Bus的座位数为:"+seat);
	}
	public Bus(int seat){
		System.out.println("父类的构造方法");
		this.seat=seat;
	}
}
public class car extends Bus {  //子类轿车类
	public void showSeat(){ //方法重写
		this.seat=4;
		System.out.println("子类car的座位数为"+seat);
		System.out.println("父类的Bus的座位数为"+super.seat);
	}
	public car(int seat){ //带参构造方法
		super(seat);
		System.out.println("子类的构造方法");
	}
}
public class test {
	public static void main(String[] args){
		car honda=new car(55);
		honda.showSeat();
	}
}

问下大神  为什么输出是:

子类car的座位数为4

父类的Bus的座位数为4

我只是在构造方法里面给seat赋了一个值55吧 

正在回答

3 回答

在car子类中的showseat方法你用this.seat,因为子类里面没有重新定义seat变量,所以系统默认此时你调用的是父类的seat,所以当你的程序执行到这的时候你原来给父类seat赋值55在这被覆盖了,所以结果是4。如果你把this.seat=4改成int seat=4,在子类里面重新定义一个和父类一样的变量,此时输出结果就对了。

0 回复 有任何疑惑可以回复我~

额.....你给父类的赋值没有用啊,你调用的是子类的方法.....他不会调用父类的方法的。只是在实例化Car的时候会先实例化父类的构造方法。


0 回复 有任何疑惑可以回复我~

你Car的showSeat方法中,你给seat赋了4

在main方法中调用了car对象的showSeat方法....

0 回复 有任何疑惑可以回复我~
#1

dapatpat 提问者

我的car的构造方法是会给Bus.seat赋值为55的 我刚才在car的showseat方法里面this.seat之前和之后都输出了一下super.seat 之前输出的是55 但是之后输出的就变成了4 不知道为什么这里的this.seat把父类的seat都给改了。。。。。
2015-04-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530696    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

大神来看看

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信