zoukankan      html  css  js  c++  java
  • Java开发之abstract 和 interface的区别

    Java开发abstract 和 interface的区别

    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

  • 相关阅读:
    Web API 跨域问题
    找不到System.Web.Optimization命名空间
    IIS7配置rewriter
    Windows server 2008 R2实现多用户远程连接 (转)
    DatabaseGenerated(转)
    SQL、LINQ、Lambda 三种用法(转)
    Mvcpager以下各节已定义,但尚未为布局页“~/Views/Shared/_Layout.cshtml”呈现:“Scripts”。
    15-07-16 数据库--增删改查
    看名字测缘分
    String类
  • 原文地址:https://www.cnblogs.com/panxiaochun/p/5613282.html
Copyright © 2011-2022 走看看