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入门第二季
531292 学习 · 6327 问题
相似问题