覆盖时将实例方法转换为抽象方法

时间:2017-07-06 11:19:53

标签: java inheritance methods abstract override

我在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();
}

你能澄清一下吗?这是最重要的吗?

1 个答案:

答案 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),则会打印字符串。