重写时将实例方法转换为抽象方法



我在Java SE规范中读过以下内容,但没有完全理解它:链接

例如,如果一个类声明了两个同名的公共方法,并且一个子类覆盖了其中一个,则该子类仍继承另一个方法。

如果未继承的方法在类中声明,

或者未继承的方法在接口中声明并且新声明是抽象的,则称新声明覆盖它。

不符合这种情况吗?

public class Parent{
public void method(){
System.out.println("Call inside parent class");
}
}

public abstract class Child extends Parent{
public abstract void method();
}

你能澄清一下吗?这是压倒一切吗?

这两句话并不是特别相关:第一句只是举了上一句的例子。

这种情况与第二句相匹配,但与第一句不匹配,因此这将是覆盖而不是实现或隐藏的示例。

第一句的一个例子是

public class Parent {
public void method() {
System.out.println("Call inside parent class");
}
public void method(int i) {
System.out.println("Call method(int) inside parent class");
}
}
public class Child extends Parent{
public void method() {
}
}

在这里,Child覆盖method()并继承method(int i),所以如果你调用new Child().method(0),字符串将被打印出来。

最新更新