抽象類: 聲明方法的存在而不去實現它的類被叫作抽象類(abstract class),它用於要建立一個體現某些基本行爲的類,併爲該類聲明方法,但不能在該類中實現該類的狀況。java
不能建立abstract 類的實例。函數
然而能夠建立一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。spa
不能有抽象構造函數或抽象靜態方法。Abstract 類的子類爲它們父類中的全部抽象方法提供實現,不然它們也是抽象類爲。取而代之,在子類中實現該方法。知道其行爲的其它類能夠在類中實現這些方法。code
package Text_1; abstract class Abs{ public int a; public int b = 10; public abstract void foo(); public abstract void fun(); } class Test_abs extends Abs{ public void getValue(){ a = 12; b = 24; System.out.println(" a = " + a + " b = " + b ); } public void show(){ System.out.println("Test_abs : " ); foo(); fun(); } public void fun(){ System.out.println("in class Text_abs in fun()"); } public void foo(){ System.out.println("in class Text_abs in foo() "); } } public class Inter_Abstra { public static void main(String[] args) { // TODO Auto-generated method stub Test_abs a = new Test_abs(); a.show(); a.getValue(); } }
結果:對象
Test_abs :
in class Text_abs in foo()
in class Text_abs in fun()
a = 12 b = 24
繼承
接口(interface)是抽象類的變體。在接口中,全部方法都是抽象的。接口
多繼承性可經過實現這樣的接口而得到。get
接口中的全部方法都是抽象的,沒有一個有程序體。接口只能夠定義static final成員變量。class
接口的實現與子類類似,除了該實現類不能從接口定義中繼承行爲。當類實現特殊接口時,它定義(即將程序體給予)全部這種接口的方法。而後,它能夠在實現了該接口的類的任何對象上調用接口的方法。因爲有抽象類,它容許使用接口名做爲引用變量的類型。一般的動態聯編將生效。引用能夠轉換到接口類型或從接口類型轉換,instanceof 運算符能夠用來決定某對象的類是否實現了接口。變量
package Text_1; interface Inter{ public int a = 20; public int b = 10; public abstract void foo(); public abstract void fun(); } class Test_abs implements Inter{ public void getValue(){ System.out.println(" a = " + a + " b = " + b ); } public void show(){ System.out.println("Test_Inter : " ); foo(); fun(); } public void fun(){ System.out.println("in class Text_Inter in fun()"); } public void foo(){ System.out.println("in class Text_Inter in foo() "); } } public class Inter_Inter { public static void main(String[] args) { // TODO Auto-generated method stub Test_abs a = new Test_abs(); a.show(); a.getValue(); } }
結果:
Test_Inter : in class Text_Inter in foo() in class Text_Inter in fun() a = 20 b = 10