Java开发abstract 和 interface的差异
发布时间:2021-12-10 16:35:50 所属栏目:PHP教程 来源:互联网
导读:Java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以实现多个接口 那什么时候用abstract,什么时候用interface呢? 当某个子类和父类是 is a关系时,比如一个亚洲人是一个人,那么一个亚
Java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以实现多个接口 那什么时候用abstract,什么时候用interface呢? 当某个子类和父类是 is a关系时,比如一个亚洲人是一个人,那么一个亚洲人的子类可以继承一个人的父类。 当子类和父类是like a关系时,比如一个美洲超人像一个超人,超人的能力不是每个人都有的,所以不是所有人的属性,我们不能把超能力归于人的父类,这时就可以用interface 代码例子: public abstract class Man { public abstract void eat(); } public interface SuperPower { public void superPower(); } public class AsiaMan extends Man { @Override public void eat() { System.out.println("亚洲人用筷子吃"); } } public class AmericanSuperMan extends Man implements SuperPower { public void superPower() { System.out.println("美国超人会飞"); } @Override public void eat() { System.out.println("美国人用刀叉吃"); } } public static void main(String[] args) { Man anAsiaMan = new AsiaMan(); AmericanSuperMan anAmericanSuperMan = new AmericanSuperMan(); anAsiaMan.eat(); anAmericanSuperMan.eat(); anAmericanSuperMan.superPower(); } 运行结果: 美国人用刀叉吃 美国超人会飞 亚洲人用筷子吃 正确的使用abstract和interface有利提高代码可读性,当人们看到extend时就会知道这是一个is a什么,看到implement时可以知道这个类有什么特性like a ![]() (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |