class B{
void print(String s){
System.out.println('B');
}
}
class D extends B{
public void print(Object o){
System.out.println('D');
}
}
public class TestB {
public static void main(String[] args) {
D d = new D();
d.print("Test");
}
}
大家好,我可以知道如何确定这种打印方法使用的是哪种打印方法,以及使用它的原因吗?我知道这里没有向上转换或方法重写。既然Object是String的超类,那么print方法会在类D中使用吗?
1条答案
按热度按时间sh7euo9m1#
您提供的代码称为
Method Overloading
。main方法中的代码告诉程序创建类
D
的示例,并使用String
参数调用方法print
。因为这是
Method Overloading
而不是Method Overriding
,所以Java运行时选择运行原始方法。要使这段代码方法覆盖两个类中的两个方法,需要有相同类型的参数,如下所示:
输出量:
或者,如果你想让程序重载方法,但仍然显示输出
D
,你需要将**“Test”**声明为Object变量,或者将其强制转换为Object: