抽象类调用自己的抽象方法,实现来自子类

2018-11-19  本文已影响0人  yesyourhighness

先看一段代码

public abstract class Parent {

    public abstract void dosomething();

    public void say(){
        dosomething();
        System.out.println("www.jianshu.com");
    }

}
public class Children extends Parent{

    @Override
    public void dosomething() {
        System.out.println("张三来啦");
    }

    public static void main(String[] args){
        Children c = new Children();
        c.say();
    }

}

执行结果
"张三来啦"
www.jianshu.com

分析:
记住:抽象方法是不能调用的
原因就是抽象方法没有方法体。

但是,在一个类中定义了一个抽象方法,在这个类 或 这个类的子类 中是可以调用的。
为什么可以调用呢?
因为,具有抽象方法的类,一定是一个抽象类,
而抽象类在被继承的时候,必须重写这个抽象类的抽象方法,
而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。
故,你在 抽象类 或 抽象类的子类 中可以使用这个抽象方法,是因为当真正实例化去使用的时候,使用的是子类重写后的实例方法。

上一篇下一篇

猜你喜欢

热点阅读