1. 程式人生 > >java 的 抽象類、接口

java 的 抽象類、接口

類名 evel 方法體 ima 調用 接口的多繼承 cte 父類 imp

1、抽象類:
抽象類定義 abstract:[public abstract class clas_name{ }(抽象類)]
抽象方法 abstract :[public abstract void/返回值類型 name();(抽象方法)註:沒有方法體]
方法體: 方法{ 方法體 } 方法裏面的內容就是方法體 (包括{ })
抽象類不能創建對象,因為沒有意義
如果一個普通類繼承了抽象類,就必須重寫裏面的所有抽象方法
有抽象方法的類一定是一個抽象類(一個抽象類不一定有抽象方法)
抽象類可以定義普通方法,但是該方法只能是繼承本類的普通類去調用
abstract 不能和 private(矛盾) 、final(常量) 、 static 一起用

package com.oracle.dome01;
//抽象類定義 abstract
//抽象類不能創建對象,因為沒有意義
//如果一個普通類繼承了抽象類,就必須重寫裏面的所有抽象方法
//有抽象方法的類一定是一個抽象類
//抽象類可以定義普通方法,但是該方法只能是繼承本類的普通類去調用
public abstract class developer {
     //抽象方法(沒有方法體)
      public abstract void work();
}
package com.oracle.dome01;

public class andriod extends developer{
    public
void work(){ System.out.println("寫安卓代碼"); } }
package com.oracle.dome01;

public class javaEE extends developer{
    public  void work(){
        System.out.println("寫javaEE代碼");
    }
    public void work(int[] list){
        
    }
    public void work(double[] list){
        
    }
}    

建立測試類

package com.oracle.dome01;

public class test {

    public static void main(String[] args) {
        javaEE j = new javaEE();
        j.work();
        andriod a = new andriod();
        a.work();
    }

}

效果如下:

技術分享圖片

2、接口:(接口是功能的集合 可以看做是一種 數據類型)
(1)定義:接口定義時需要使用interface關鍵字[編譯後仍然會產生.class文件]
(2)類實現接口:implement
(3)接口的多實現:解決多弊端的弊端
(4)類繼承類同時實現接口 [接口中定義的事物的擴展功能,父類中定義的事物的基本功能]
(5)接口的多繼承
(6)接口的思想 : 好處
1、接口的出現擴展了功能。
2、接口其實就是暴漏出來的規則。
3、接口的出現降低了耦合性,即設備與設備之間實現了解耦。

package com.oracle.dome02;
//比抽象類更抽象的類:接口
//接口只能寫抽象方法
//接口中定義的變量有固定修飾符 : public static final 
//static : 可以直接用類名.成員
// final : 常量
public interface Usb {
     int a = 1 ;
    public     abstract  void  open();
}
package com.oracle.dome02;
//實現類:實現接口
public class mouse implements Usb{
        public void open(){
            System.out.println("打開鏈接");
        }
}

建立測試類:

package com.oracle.dome02;

public class test {
        public static void main(String[] args) {
            mouse  m = new mouse();
            m.open();
        }
}

效果如下:

技術分享圖片

三、接口和抽象類的區別:

1.抽象類中可以有普通成員變量,接口中沒有普通成員變量
2.抽象類可以有構造方法,接口中不能有構造方法
3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。
4. 抽象類中可以包含靜態方法,接口中不能包含靜態方法
5. 抽象類中的抽象方法的訪問類型可以是 public,protected ,
但接口中的抽象方法只能是 public 類型的,並且默認即為 public abstract 類型
6. 一個類可以實現多個接口,但只能繼承一個抽象類。
7. 抽象類和接口中都可以包含靜態成員變量,抽象類中的靜態成員變量的訪問類型可以任意,
但接口中定義的變量只是public static final 類型,並且默認即為 public static final 類型。

四、應用:

----------------------------------------------------------
抽象類:犬
public abstract class  犬{
    public abstract void   能吃();        
    public abstract void   能叫();

}
-----------------------------------------------------------
接口:緝毒功能
public  interface  緝毒{
    public  abstract void 緝毒();    
}
-------------------------------------------------------
具體事物:緝毒犬
public class  緝毒犬 extendsimplements 緝毒{
    public void 能叫(){};
    public void 能吃(){};
    puclic void 緝毒(){};

}
--------------------------------------------------------
建立測試類 :
public class test{
    public  static void main(String[] args){
        緝毒犬 緝毒犬一號 = new 緝毒犬();
        緝毒犬一號.能吃();
        緝毒犬一號.能叫();
        緝毒犬一號.緝毒();
    }    
}

java 的 抽象類、接口