关于课后习题,请问为什么反复调用不同子类的方法,属性的值不会变,只赋值一次?

来源:10-1 Java 中的多态

风中过客

2015-04-16 19:32

package guoke;
 
public class Bus extends Vehicle { //Bus类继承 Vehicle类。在Bus.java我还建了其他Vehicle的子类,car,bicycle类
 
/*问:为什么通过反复调用不同子类的date方法,
name,number,way属性只赋值一次?   我是这样调用的   Bus bus=new Bus();  
                                                   bus.date();
                                                   Car car=new Car();
                                                   car.date();
 结果显示全是第一次调用的结果,比如上面这样写的话, 就是显示两次bus的属性。
                                                   
*/
/* 父类这样写的
     public class Vehicle {
     protected  String name;
     protected  int number;
     protected  String way;
     public  void date(){
        System.out.println("交通工具可以载客");
     }
 
}
*/  
     protected  String name="bus";//属性
     protected  int number=40;
     protected  String way="land";
     protected  String name="bus";
     protected  int number=40;
     protected  String way="land";
public void date() {//显示属性的值
 
 
// TODO Auto-generated constructor stub
System.out.println("公交汽车可以载客:");
   System.out.println(name);
   System.out.println("载客人数number:"+number);
   System.out.println(way);
}
   
}
class Car extends Vehicle {         //car子类
protected  String name="car";
    protected  int number=4;
    protected  String way="land";
public void date() {
 
// TODO Auto-generated constructor stub
System.out.println("轿车可以载客:");
   System.out.println(name);
   System.out.println("载客人数number:"+number);
   System.out.println(way);
}
class Bicycle extends Vehicle {    //Bicycle子类
protected  String name="bicycle";
   protected  int number=2;
   protected  String way="land";
public void date() {
 
// TODO Auto-generated constructor stub
System.out.println("自行车可以载客:");
   System.out.println(name);
   System.out.println("载客人数number:"+number);
   System.out.println(way);
  
}


写回答 关注

1回答

  • 没有马甲线的安琪拉
    2015-04-17 10:49:32
    已采纳

    每个子类对象中属性是独立的啊

    xiaoji... 回复风中过客

    应该用初始化块或者构造方法初始化num,name,number的值,而你重新定义了子类与父类同名的局部变量,这是逻辑上的错误。

    2015-05-04 11:54:36

    共 4 条回复 >

Java入门第二季 升级版

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

530653 学习 · 6091 问题

查看课程

相似问题