小编Kar*_*ria的帖子

编译器如何决定重载和重写?

class A {
    public void doSomething(float f) {
        //print "in A"
    }
}

class B extends A {
    public void doSomething(int i) {
        // print "in B"
    }

    public static void main(String[] args) {
        A a = new B();
        a.doSomething(10);
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器首先检查doSomething()A 类中是否存在。一旦确认,在运行时,将检查对象类型并执行相应的方法,该方法doSomething()应该执行 B 类的方法,但会执行doSomething()类的方法。A

如果两个方法相同,则只会B doSomething()执行类。编译器如何决定某个方法被重写,从而由 JVM 处理?

java overriding overloading javac

3
推荐指数
1
解决办法
258
查看次数

标签 统计

java ×1

javac ×1

overloading ×1

overriding ×1