Jave:在继承

时间:2017-05-24 10:55:54

标签: java inheritance

考虑以下因素:

class Parent {
    public void print(Object s) {
        System.out.println("I am inside Parent Object Method.");
    }
}

public class Child extends Parent{

    public void print(String s) {
        System.out.println("I am inside Child String Method.");
    }

    public static void main(String arg[]) {
        Parent a = new Child();
        a.print(null);
    }
}

输出:

I am inside Parent Object Method

这里JVM正在调用Parent Method来代替子方法,而不管&#34的逻辑如何;应该调用更具体的方法"模糊不清。

在java中实现此实现的原因是什么?

2 个答案:

答案 0 :(得分:3)

这里没有涉及任何问题。涉及的是重载。您调用Object的重载方法导致passe值1转换为Integer对象和Parent类的打印方法,因为它可用于Child

这里没有歧义,因为你重载了不同类型的方法。

答案 1 :(得分:1)

1不是String,并且没有自动转换为String,因此无法将其传递给需要String参数的方法。

因此public void print(Object s)被执行,因为int可以装入IntegerObject

如果您希望执行a.print("1");,请尝试a.print(null);甚至public void print(String s)