今天在刷面试题的时候,发现一道比较新颖的题目,关于方法的重写。
原题如下:
题目问:此时输出的是父类中的方法,还是子类重写了父类的方法
public class Mianshi {
public static void main(String[] args) {
Base1 base1=new sub1();
base1.add(2, 2,1);
}
}
class Base1{
public void add(int a,int...arr) {//可变形参
System.out.println("父类的方法");
}
}
class sub1 extends Base1{
public void add(int a,int[]arr) {
System.out.println("子类一重写父类的方法");
}
}
输出结果:
子类一重写父类的方法
结果分析:
可变形参的值传递,与数组类型,在Java中认为是一种相同的类型。所以父类的方法相当于被重写了,于是输出了子类的方法。