我在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)
,字符串将被打印出来。