抽象方法能不能直接调用?
1个回答
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
关注
展开全部
抽象方法是不能调用的,原因就是抽象方法没有方法体。
在一个类中定义了一个抽象方法,在这个类或这个类的子类中是可以调用的。为什么可以调用呢?因为,具有抽象方法的类,一定是一个抽象类,而抽象类在被继承的时候,必须重写这个抽象类的抽象方法,而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。故,你在抽象类或抽象类的子类中可以使用这个抽象方法,是因为当真正实例化去使用的时候,使用的是子类重写后的实例方法。
抽象类方法的实现是在对应的子类中,抽象类(父类)对象指向子类即可调用,即new 子类而不是本身,这是多态的体现:父类只有函数头声明,而子类通过重写(“覆盖”)完成具体的实现。
如public abstract Animal{void show();}public Cat extends Animal{@overridevoid show(){syso ("我是子类cat!");}}main(){//父类引用指向子类Animal a=new Cat();a.show ();}}运行结果:我是子类cat
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询