我自己定义了一个基类z,然后定义a,b两个类均继承至基类.
我在程序里需要定义了一个变量h.
变量h的类型有可能是a类,也有可能是b类.这是随机定的.在程序运行后,则确定了h的类型.请问在程序中我应该怎么定义这个变量h?
我试过用基类z来定义变量h,但是在程序运行的最后,它还是要转换成a或b类的

解决方案 »

  1.   

    java 中,方法具有多态性,父类和子类具有相同方法名的话,
    子类的方法会覆盖父类的方法
    属性是没有多态性的,父类和子类具有相同属性名的话,
    他们之间是遮盖的(shadow),有些书描述为影子变量,
    区分父类和子类相同的属性名方法:this.xxx;
      

  2.   

    z h = new a();或z h = new b();
      

  3.   

    楼上说的只是定义,在程序运行时,h如果是a类的话,可能要调用get()方法.如果是B类的话也同样要调用get()方法.但这两个get()方法是不一样的.
      

  4.   

    z h;
    h = getInstanceOfAorB();if (h instanceof a) {
      // h 是 a 类的对象
    } else if (h instanceof b) {
      // h 是 b 类的对象
    }
      

  5.   

    建议你使用Java的高级特性:
    1.反射
    2.泛型