先看一段代码
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
分析:
记住:抽象方法是不能调用的
原因就是抽象方法没有方法体。
但是,在一个类中定义了一个抽象方法,在这个类 或 这个类的子类 中是可以调用的。
为什么可以调用呢?
因为,具有抽象方法的类,一定是一个抽象类,
而抽象类在被继承的时候,必须重写这个抽象类的抽象方法,
而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。
故,你在 抽象类 或 抽象类的子类 中可以使用这个抽象方法,是因为当真正实例化去使用的时候,使用的是子类重写后的实例方法。
网友评论