dapatpat
2015-04-23 11:00
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吧
在car子类中的showseat方法你用this.seat,因为子类里面没有重新定义seat变量,所以系统默认此时你调用的是父类的seat,所以当你的程序执行到这的时候你原来给父类seat赋值55在这被覆盖了,所以结果是4。如果你把this.seat=4改成int seat=4,在子类里面重新定义一个和父类一样的变量,此时输出结果就对了。
额.....你给父类的赋值没有用啊,你调用的是子类的方法.....他不会调用父类的方法的。只是在实例化Car的时候会先实例化父类的构造方法。
你Car的showSeat方法中,你给seat赋了4
在main方法中调用了car对象的showSeat方法....
Java入门第二季 升级版
530649 学习 · 6091 问题
相似问题