javaSE面试题之多态

1.首先,直接上代码看问题

public class Test{
    public static void main(String[] args) {
        //第一个问题 
        BaseTest baseTest = new Sub();
        baseTest.info(1,2,3);
        //第二个问题
        Sub sub = (Sub) baseTest;
        sub.info(1,2,3);
    }

}
class BaseTest{
    public void info(int a,int...b){
        System.out.println("Base info");
    }
}
class Sub extends BaseTest{
    public void info(int a,int[] b){
        System.out.println("sub info_1");
    }
    public void info(int a,int b,int c){
        System.out.println("sub info_2");
    }
}

2.请问输出结果是什么?

回答这个问题之前,我们先来看看如下代码
javaSE面试题之多态_第1张图片
为什么上面这个图片中的类报错了?
原因很简单,因为这两个方法实际上是一样的
所以,BaseTest这个父类中的
public void info(int a,int…b){
System.out.println(“Base info”);
}
这个方法被子类中Sub的
public void info(int a,int[] b){
System.out.println(“sub info_1”);
}
这个方法重写了.
因此,第一个问题输出结果为:
在这里插入图片描述
第二个问题其实就很简单了,直接上结果:
在这里插入图片描述
最后,希望能帮助到大家!

你可能感兴趣的:(java基础面试题,java,多态)