加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读