java中的介面interface

來源:互聯網
上載者:User

標籤:nbsp   ext   tco   ble   circle   ima   stat   sqrt   sys   

關於介面

介面描述了實現了它的類擁有什麼功能。因為Java是強型別的,所以有些操作必須用介面去約束和標記。介面作為類的能力的證明,它表明了實現了介面的類能做什麼。

 

介面中的成員

介面中的所有的成員,預設情況下都是public的,也必須是public,無論是方法,還是欄位。因為介面就是規定了API,如果實現的類不公開介面中的API,怎麼能叫API呢?

介面中可以 定義方法 和 欄位。

介面中的欄位,預設(也是必須)為 public static final  。在定義的介面中必須初始化,因為是final。它們將成為類中的靜態常量欄位

介面中的方法,預設(也是必須)為 public abstract    。只需在介面中定義即可,不能實現(讓實現了介面的類去實現)。將成為類中的public 執行個體方法  , 實現了介面的類必須實現介面中定義的方法。

 

 

 

介面和類之間的implements關係

介面就是用來被實現implements 的 ,不然定義介面也就沒意義了。Java中的類只能繼承一個父類,但是可以實現多個介面。除了抽象類別,普通類必須實現介面中定義的所有方法。

當一個類實現了某個介面後,介面可以看做是 是實現了介面的類 的 父類。利用多態的特性,我們往往選擇面向介面編程,而不是面向具體的類,這樣可以讓程式員關注API而不是內部實現,並提供更大的靈活性。

 

public class Test {        public static void main(String[] args) {                Shape[] shapes = {                            new Rectangle(5,6),            new Triangle(3, 4, 5),            new Triangle(6, 8, 10)            };                double totalArea =0;        double totalCircle =0;                for(Shape s:shapes)        {            totalArea += s.getArea();            totalCircle += s.getCircle();                    }                System.out.println("totalArea:"+totalArea);        System.out.println("totalCircle:"+totalCircle);                System.out.println( new Triangle(3,4,5) instanceof Shape);   //true                    }}interface Shape{    double getArea();    double getCircle();}class Rectangle implements Shape{    Rectangle(int w,int h)    {        width = w;        height =h;    }        private int width;    private int height;            @Override    public double getArea() {        return height*width;    }    @Override    public double getCircle() {                return 2*(height+width);    }    }class Triangle implements Shape{    Triangle(int a,int b,int c)    {        e1  = a;        e2 = b;        e3 = c;            }        private int e1;    private int e2;    private int e3;        @Override    public double getArea() {                double p = (e1+e2+e3)/2.0;                        double area= Math.sqrt(p*(p-e1)*(p-e2)*(p-e3));                return area;    }    @Override    public double getCircle() {                return e1+e2+e3;    }    }

 

抽象類別於介面

java集合架構中的例子

 

 

 

 

 

 

介面和介面之間的extends關係

 

介面可以擴充extends 已經存在的介面,如果介面A擴充了介面B,則A將繼承B中的所有成員,就像他們定義在A中一樣。一個介面可以擴充多個介面。

interface Shape{    double getArea();    double getCircle();}interface Color{    void setColor(int color);    void getColor();}interface Rectangle extends Shape , Color{    double getWidth();    double getHeight();    }

 

這樣,一個類如果要實現Rectangle 介面,就必須實現 上面的6個方法。

 

 

 

介面的總結

 

1、介面不能new出執行個體。但可以定義介面類型的變數,去引用實現了這個介面的類的對象。此時介面相當於實作類別的父類。

2、介面中的方法不實現,而是用一個 分好  ; 代替函數體。

3、介面是Java中的一種參考型別。

 

java中的介面interface

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.