java重载一个被重写的、继承的方法
假设我的类A和类B继承自A。我想重写方法public void print()
,它应该可以正常工作
但是有没有可能在B中重载public void print()
,但是这次使用参数,而不在类a中声明方法
abstract class A {
String name;
public void print();
}
class B extends A {
@Override
public void print() {
System.out.println("Hello"); // Works just fine
}
public void print(String s) {
System.out.println("Hello" + s); // Doesn't work when calling it, as it must be declared in A
}
}
# 1 楼答案
是的,可以使用参数重载B中的public void print(),而无需在类a中声明方法。但必须将抽象类定义为:
抽象类可以有抽象方法,也可以有普通方法。当您声明普通方法时,您还必须给出该方法的实现。否则,您必须用抽象关键字声明该方法(否则您将得到编译错误),即不需要给出实现。在您的例子中,必须用上面提到的抽象关键字声明printf()方法。当扩展类A时,在类B中必须提供printf()方法的实现,该方法在类A中是抽象的,称为方法重写。除此之外,您还可以使用任何参数定义printf()方法,这被称为方法重载。但是您必须使用类B对象访问这两个方法,因为抽象类不能实例化,只能继承。请参考以下代码: