解决方案 »

  1.   

    这是Java的多态性要求的,用到多态性的时候必须重写,因为只有重写了才能实现动态绑定,请看以下例子class Cycle {
    public String type() {
    return "";
    }
    }class Unicycle extends Cycle {
    public String type() {
    return "Unicycle";
    }
    }class Bicycle extends Cycle {
    public String type() {
    return "Bicycle";
    }}class Tricycle extends Cycle {
    public String type() {
    return "Tricycle";
    }
    }public class Upcasting {
    public static void ride(Cycle c) {
    System.out.println("ride " + c.type());
    } public static void main(String[] args) {
    Unicycle uc = new Unicycle();
    Bicycle bc = new Bicycle();
    Tricycle tc = new Tricycle();
    ride(uc);
    ride(bc);
    ride(tc);
    }
    }如果你不重写type方法而是重新写一个新的方法(把方法名改为type1,type2,type3),那么就实现不了上面程序的多态性,请看以下代码
    class Cycle {
    public String type() {
    return "null";
    }
    }class Unicycle extends Cycle {
    public String type1() {
    return "Unicycle";
    }
    }class Bicycle extends Cycle {
    public String type2() {
    return "Bicycle";
    }}class Tricycle extends Cycle {
    public String type3() {
    return "Tricycle";
    }
    }public class Upcasting {
    public static void ride(Cycle c) {
    System.out.println("ride " + c.type());
    } public static void main(String[] args) {
    Unicycle uc = new Unicycle();
    Bicycle bc = new Bicycle();
    Tricycle tc = new Tricycle();
    ride(uc);
    ride(bc);
    ride(tc);
    }
    }
      

  2.   

    这是java的多态机制、用于简易开发的,多用就能体会到好处。楼上的例子就是详解。
      

  3.   

    根据您的疑惑,我觉得您可以理解overwrite是java提供的一个特性。
    新function 和overwrite都可以解决您说的问题,overwrite还可以解决其他问题,后面再慢慢了解。
      

  4.   

    除了楼上几位说的之外,补充一点:虽然之类重写了父类的的方法,但不代表父类的方法就不会使用了.有可能父类的方法只是暂时的需要被改写.除了该子类是特殊情况以外,父类的方法仍需要继续被使用.java的多态让我们可以继续使用这两个方法.而且方法同名说明它们大致的功能很相似,可读性更高