我有以下这些课程:
public class Useful
{
public void f(Object a)
{
System.out.println("In base f");
}
public void g(String a)
{
System.out.println("In base g");
}
}
public class MoreUseful extends Useful
{
public void f(String a)
{
System.out.println("In derived f");
}
public void g(Object a)
{
System.out.println("In derived g");
}
}
我试图覆盖基类方法,但在派生类中更改了参数。 在MoreUseful.f()方法中,我使用子类参数(String),而不是基类中的Object。 在MoreUseful.g()方法中,我使用了超类参数(Object),而不是基类中的String。
这种方式可以进行覆盖吗? 上述两种情况中哪一种是正确的重写?
注:重写指的是子类定义一个与父类方法名、返回值类型和参数列表都相同的方法来替换父类方法。
@Override
,这样编译器本身就会告诉你是否可以这样做或者是否有错误。https://dev59.com/4HVD5IYBdhLWcg3wGHau - Bhesh Gurung