本片隨筆講講java中接口與抽象類。java
一,接口post
一、什麼是接口?測試
那在平常生活中接口是什麼呢?就是兩個對象之間進行鏈接的部分就是接口,就好比熱水器與水管的接口同樣,他能夠確保不一樣的東西之間的順利鏈接,就如不一樣的熱水器廠家和水管廠家只要按照接口的標準來進行生產。那麼熱水器和水管就能夠順利鏈接了。而在java領域中接口是抽象類的一種,只包含常量和方法是定義,而沒有變量和方法的實現,且其方法都是抽象方法。this
1.一、具體表現:一、經過接口實現列的相同行爲,不用考慮類之間的關係。spa
二、經過接口指明須要實現的方法。code
二、接口的語法聲明:對象
Xxx.java文件blog
package pkg2; //定義類的接口,public後面加interface public interface Xxx{ //方法 抽象方法必須是沒有方法體,而不是方法體內沒有代碼。以下 public int a(); }
Xxxlmpl.java文件繼承
1 package pkg2; 2 3 //Xxxlmpl.java文件名 鏈接 Xxx.java文件名 4 public class Xxxlmpl implements Xxx{ 5 6 }
3.接口用法:用一道題目來說解接口的用法,計算圓的周長,面積和體積。接口
第一步:咱們先來寫一個接口類的文件:Circle.java文件。
1 package pkg8; 2 3 public interface Circle{ 4 5 //定義一個方法 類型用float 類接口不須要方法體 因此直接用分號。 6 //周長 7 public float getCircumference(); 8 //面積 9 public float getArea(); 10 //體積 11 public float getVolumeCube(); 12 }
再寫一個接口的實現類:Circlelmpl.java文件。
1 package pkg8; 2 3 public class CircleImp2 implements Circle2{ 4 //定義用於表示圓周率的常量PI 5 private static final float PI = 3.14f; 6 7 //定義用於表示圓的半徑 8 private float radius; 9 10 //構造方法用於傳遞參數。 11 public CircleImp2(float radius){ 12 this.radius = radius; 13 } 14 15 //把接口類的須要求的周長,面積,體積實現 若是下: 16 //周長 17 public float getCircumference(){ 18 //實現的代碼 19 return 2 * PI * radius; 20 } 21 //面積 22 public float getArea(){ 23 //實現的代碼 24 return PI * radius * radius; 25 } 26 //體積 27 public float getVolumeCube(){ 28 //實現的代碼 29 return 4/3 * radius * radius * radius; 30 } 31 }
提示:implements 接口列表:可選參數,用於指定該類實現的是哪些接口。當使用implements關鍵字時,接口列表爲必選參數。當接口列表中存在多個接口名時,各個接口名之間使用逗號分隔。
最後來一個測試類:Test.java文件
package pkg8; public class Test2{ public static void main(String args[]){ //寫了構造方法,因此直接把值傳過來便可。 //求半徑爲8.3的圓的周長,面積,體積。 Circle2 circle = new CircleImp2(8.3f); System.out.println("周長是:"+circle.getCircumference()+" cm"); System.out.println("面積是:"+circle.getArea()+ " cm^2"); System.out.println("體積是:"+circle.getVolumeCube()+ " cm^3"); } }
運行結果:
四、final關鍵字
上面代碼中 出現了一個final關鍵字,那final關鍵字有上面做用呢
final關鍵字的做用表明的是不可變的,最終的意思,他能夠修飾類,類的成員變量和成員方法。可是final做用不一樣
一、fina修飾成員變量:則成爲常量 如:final double count;
二、final修飾成員方法:則該方法吧被子類重寫。
三、final修飾類,則類是不能被繼承的 如:
public final class Name{ ..... }
總結:
final關鍵字的用法共有四種:
2、抽象類
抽象類的特色:
一、最大的特色就是模糊的。爲何說是模糊的呢?由於抽象類是不具體的,現實不存在的東西。
二、抽象方法 必需要有抽象類 (但抽象類中能夠沒有抽象方法) 不然程序會報錯。例如:
package pkg9; public class 週末{ public void 逛街(){ } public void 看電影(){ } //抽象類 public abstract void 結婚(); }
這裏定義了一個週末的類 在裏面有一個3個方法其中一個是抽象方法。
運行結果:
定義一個抽象類:
三、繼承了抽象類,必須實現抽象類的全部抽象方法。
四、抽象類也能夠繼承抽象類,這樣不須要實現父抽象類的方法。
接口和抽象類有什麼區別?
一、接口中的全部方法都不須要實現(不容許有任何代碼)。抽象類有些方法實現,有些方法沒有實現。
二、接口裏只能包含抽象方法,靜態方法和默認方法,不能爲普通方法提供方法實現,抽象類則能夠包含普通方法。