多态练习题理解2

判断下面代码的运行结果是什么?

public class Test {
    
    
    public static void main(String[] args) {
    
    
        Base base = new Sub();
        base.add(1, 2, 3);
        Sub sub = (Sub) base;
        sub.add(1, 2, 3);
    }

}

class Base {
    
    
    public void add(int t, int... arr) {
    
    
        System.out.println("Base");
    }
}

class Sub extends Base {
    
    

    public void add(int t, int[] arr) {
    
    
        System.out.println("Sub1");
    }

    public void add(int t, int a, int b) {
    
    
        System.out.println("Sub2");
    }
}

运行结果:

Sub1
Sub2

知识点:

  • base对象,对于方法来说,编译看左边,运行看右边。
  • 重写父类方法,形参的类型和个数要与父类的被重写的方法相同,因此sub2不算重写,只是sub1的重载。
  • 可变形参相当于数组。
  • 重载优先匹配形参个数确定的方法。

猜你喜欢

转载自blog.csdn.net/AmorFati1996/article/details/108654743