java - 该继承程序在执行时给出输出 '2' 。如何?

标签 java

class A { }

class B extends A { }

class C extends B { }

public class MainClass  {

    static void overloadedMethod(A a) {
        System.out.println("1");
    }

    static void overloadedMethod(B b) {
        System.out.println("2");
    }

    static void overloadedMethod(Object obj) {
        System.out.println("3");
    }

    public static void main(String[] args) {
        C c = new C();
        overloadedMethod(c);
    }
}

这个继承程序在执行时给出输出2。怎么办?

最佳答案

好吧,C 类的实例可以传递给这三个 overloadedMethod 方法中的任何一个,因此编译器会选择其参数具有最具体类型的方法 - static void overridedMethod(B b) - 因为 BA 的子类,而 AObject 的子类,因此 BA 都更具体对象

关于java - 该继承程序在执行时给出输出 '2' 。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238979/

相关文章:

java - Collections.synchronizedSortedMap 与 ConcurrentSkipListMap 用于并发使用的排序映射

java - Spring MVC @PathVariable 如何接收多个 '/' 的参数?

java - 在 Java 中向 JTable 添加数组

Java 32 位与 64 位兼容性

Java将字节[]转换为图像

java - ClassLoader getResourceAsStream 返回 null

java自定义注解,用于修改getter方法的返回值

java - 通用通配符调用无法编译

java - AbstractTableModel 教程

: es2, sw 的 JavaFX 图形设备初始化失败