想要瞭解介面我們要先知道抽象類。那麼什麼是抽象類呢? 問題描述:生活中我們有很多的對象是無法具體描述的,比如說:我們可以說四邊形有四條邊。或者具體點說就是矩形兩邊對稱且相等,正方形四邊對稱且相等。但是對於普通的圖形而言就很難具體描述了。轉換成Java語言就是說:對於一個很具體的類我們可以很方便的定義 ...
想要瞭解介面我們要先知道抽象類。那麼什麼是抽象類呢?
問題描述:生活中我們有很多的對象是無法具體描述的,比如說:我們可以說四邊形有四條邊。或者具體點說就是矩形兩邊對稱且相等,正方形四邊對稱且相等。但是對於普通的圖形而言就很難具體描述了。轉換成Java語言就是說:對於一個很具體的類我們可以很方便的定義它的各種屬性和方法,但是對於有一些類我們卻難以瞭解它的方法時如何實現的。這時我們就可以用到抽象類。
抽象類的語法格式如下:
1 public abstract class 類名{ 2 abstract 返回值類型 方法名(參數列表);//定義抽象方法 3 }
定義抽象方法的關鍵字是:abstract。
使用abstract定義的類稱為抽象類,而使用abstract定義的方法稱為抽象方法。
抽象方法沒有方法體,本身也沒有任何意義,因此抽象類是不能夠被實例化的。
當它被其子類繼承時,子類必須實現其中的抽象所有方法。
只要類中有一個抽象放方法,此類就必須定義為抽象類。
瞭解了抽象類,我們繼續思考下麵的問題,來看先下麵一段代碼:
public abstract class shape
{
//定義一個圖形抽象類
public abstract void toString();//toString抽象方法
public abstract void paint();//畫圖的抽象方法
}
public class triangle extends shape
{
public void toString()
{
system.out.println("toString");
}
public void paint()
{
system.out.println("paint");
}
}
這樣看起來好像沒有什麼問題。如果我們有些類中不希望它有paint方法怎麼辦?把paint方法放到另一個類中?但是其它的類還要使用這個方法。而Java的語法規定了,類是不能多繼承的,怎麼辦?這時我們就可以考慮使用介面了。
介面是抽象類的延伸,解決了Java中不能多繼承的缺點。我們可以把paint方法封裝到一個介面中,然後讓需要用的圖形類的子類實現這個介面。而Java中一個類是可以實現多個介面的,我們可以把不同的方法封裝在介面中,交給類來使用。
介面的關鍵字是interface。其定義如下:
public interface 介面名 extends 類名 implements 介面,....{
//定義常量
public static final 數據類型 常量名=值;
//定義抽象方法
public abstract 返回值類型 方法名 (參數列表);
}
要註意的是:1.介面不能被實例化 2.介面的訪問修飾符只能是public 3.介面會預設提供public abstract static final關鍵字
ps:小白上路,歡迎指正。