我在Java SE规范中读到了以下内容并且没有完全理解它: link
例如,如果一个类声明了两个具有相同名称的公共方法,并且子类重写了其中一个,则子类仍然继承另一个方法。
和
如果在类中声明了未继承的方法,或者在接口中声明了未继承的方法,并且新声明是抽象的,则称新的声明将覆盖它。
这种情况不是匹配吗?
public class Parent{
public void method(){
System.out.println("Call inside parent class");
}
}
和
public abstract class Child extends Parent{
public abstract void method();
}
你能澄清一下吗?这是最重要的吗?
答案 0 :(得分:0)
这两句话并不特别相关:第一句只是举出上一句话的例子。
这种情况与第二句相匹配,但不与第一句匹配,因此这将是一个覆盖的例子,而不是实现或隐藏。
第一句话的例子是
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)
,则会打印字符串。