Java面向對象之接口interface 入門實例


一、基礎概念

  (一)接口可以簡單的理解為,是一個特殊的抽象類,該抽象類中的方法都是抽象的。

     接口中的成員有兩種:1.全局常量 2.抽象方法

     定義接口用關鍵字interface,接口中的成員都用固定的修飾符public來修飾。

  (二)接口的特點:

    1、接口不可以實例化。

    2、接口的子類必須覆蓋接口中的所有抽象方法后,才可以實例化。否則該子類是抽象類。

    3、接口是用來被實現的。

  (三)接口解決的問題:

    1.因為多繼承調用的不確定性,java中是不直接支持多繼承的,但可以通過接口來解決,將多繼承轉換成多實現。

    2.因為子類具備所屬的父類體系的基本功能后,還想擴展一些其他功能。可以通過接口來完成。

    3.避免單繼承的局限性。一個類繼承另一個類的同時,還可以實現多個接口。

   (四)接口的思想:

    1.接口的出現擴展了功能。

    2.接口的出現其實就是暴露出來的規則。

    3.接口的出現降低了耦合性。(用於解耦)

    4.接口的出現,一方在使用接口,一方在實現接口。

  (五)類與接口的區別:

    1.類與類之間的關系是繼承關系。

    2.類與接口之間的關系是實現關系。

    3.接口與接口的關系是繼承關系,而且可以多繼承。

    4.抽象類中可以定義抽象和非抽象方法。子類可以直接使用,或者覆蓋使用。接口中定義都是抽象方法,必須實現后才能使用。

    5.類用於描述是事物的共性基本功能,接口用於定義的是事物的額外功能。

二、實例代碼(一)

  1.定義接口子類SubInter_1,進行接口InterA的實現

  2.定義接口子類SubInter_2,進行接口InterA接口和InterB的多實現

  3.定義接口子類SubInter_3,繼承Fu類還進行接口InterA的實現

  3.定義接口子類SubInter_4,繼承Fu類還進行接口InterA和InterB的多實現

  1 //定義父類Fu
  2 class Fu 
  3 {
  4     public void show1()
  5     {
  6         System.out.println("Fu show1 ......");
  7     }
  8 }
  9 
 10 //定義接口InterA
 11 interface InterA
 12 {
 13     public static final int num1 = 4;  //全局常量
 14     public abstract void show2();  //抽象方法
 15 }
 16 
 17 //定義接口InterB
 18 interface InterB
 19 {
 20     public static final int num2 = 6;
 21     public abstract void show3();
 22 }
 23 
 24 //定義接口子類SubInter_1,進行實現
 25 class SubInter_1 implements InterA//子類SubInter1實現 InterA接口
 26 {
 27     public void show2()
 28     {
 29         System.out.println("SubInter_1 InterA show2 ......");
 30     }
 31 }
 32 
 33 //定義接口的子類SubInter_2,進行多實現
 34 class SubInter_2 implements InterA,InterB//用子類SubInter2 多實現 InterA接口和Inter接口
 35 {
 36     public void show2()
 37     {
 38         System.out.println("SubInter_2 InterA show2 ......");
 39     }
 40     public void show3()
 41     {
 42         System.out.println("SubInter_2 InterB show3 ......");
 43     }
 44 }
 45 
 46 
 47 //SubInter_3類繼承了Fu類的基本功能,還實現了InterA接口的基本功能。
 48 class SubInter_3 extends Fu implements InterA
 49 {
 50     public void show2()
 51     {
 52         System.out.println("SubInter_3 InterA show2 ......");
 53     }
 54     
 55 }
 56 
 57 //SubInter_4類繼承了Fu類的基本功能,還實現了InterA接口和InterB接口的基本功能。
 58 class SubInter_4 extends Fu implements InterA,InterB
 59 {
 60     public void show2()
 61     {
 62         System.out.println("SubInter_3 InterA show2 ......");
 63     }
 64     
 65     public void show3()
 66     {
 67         System.out.println("SubInter_3 InterB show3 ......");
 68     }
 69 }
 70 
 71 class InterfaceDemo1 
 72 {
 73     public static void main(String[] args) 
 74     {
 75         //SubInter_1實例化 s1
 76         SubInter_1 s1 = new SubInter_1();
 77         System.out.println(s1.num1);
 78         System.out.println(SubInter_1.num1);
 79         s1.show2();
 80         
 81         //SubInter_2實例化 s2
 82         SubInter_2 s2 = new SubInter_2();
 83         System.out.println(s2.num1);
 84         System.out.println(s2.num2);
 85         System.out.println(SubInter_2.num1);
 86         s2.show2();
 87         s2.show3();
 88         
 89         //SubInter_3實例化 s3        
 90         SubInter_3 s3 = new SubInter_3();
 91         System.out.println(s3.num1);
 92         System.out.println(SubInter_3.num1);
 93         s3.show1();
 94         s3.show2();
 95         
 96         //SubInter_4實例化 s4
 97         SubInter_4 s4 = new SubInter_4();
 98         System.out.println(s4.num1);
 99         System.out.println(s4.num2);
100         System.out.println(SubInter_4.num2);
101         s4.show1();
102         s4.show2();
103         s4.show3();
104     }
105 }

  代碼執行

  

三、實例代碼(二)

  1.定義接口InterB,繼承接口InterA。並實現InterB

  2.定義接口InterD,繼承接口InterB和接口InterC.並實現InterD

 1 //定義接口InterA
 2 interface InterA
 3 {
 4     public static final int num = 4;
 5     public abstract void show1();
 6 }
 7 
 8 //定義接口InterB,繼承接口InterA
 9 interface InterB extends InterA
10 {
11     public abstract void show2();
12 }
13 
14 //定義接口InterC
15 interface InterC 
16 {
17     public abstract void show3();
18 }
19 
20 //定義接口InterD,繼承接口InterB和接口InterC
21 interface InterD extends InterB,InterC
22 {
23     public abstract void show4();
24 }
25 
26 //定義接口子類SubInter,進行實現
27 class SubInter_1 implements InterB
28 {
29     public void show1()
30     {
31         System.out.println("SubInter_1 InterA show1 ......");
32     }
33     
34     public void show2()
35     {
36         System.out.println("SubInter_1 InterB show2 ......");
37     }
38 }
39 
40 //定義接口子類SubInter,進行實現
41 class SubInter_2 implements InterD
42 {
43     public void show1()
44     {
45         System.out.println("SubInter_2 InterA show1 ......");
46     }
47     
48     public void show2()
49     {
50         System.out.println("SubInter_2 InterB show2 ......");
51     }
52     
53     public void show3()
54     {
55         System.out.println("SubInter_2 InterC show3 ......");
56     }
57     
58     public void show4()
59     {
60         System.out.println("SubInter_2 InterD show4 ......");
61     }
62 }
63 
64 class InterfaceDemo2
65 {
66     public static void main(String[] args) 
67     {
68         
69         //SubInter_1實例化s1        
70         SubInter_1 s1 = new SubInter_1();
71         System.out.println(s1.num);
72         s1.show1();
73         s1.show2();
74         
75         //SubInter_2實例化s2
76         SubInter_2 s2 = new SubInter_2();
77         System.out.println(s1.num);
78         s2.show1();
79         s2.show2();
80         s2.show3();
81         s2.show4();
82     }
83 }

  代碼執行

  

四、實例代碼(三)

  接口Inter中有4個方法,子類只想用其中的一個方法。

  用DemoA類實現接口Inter中的所有方法進行解決。

 1 interface Inter
 2 {
 3     public abstract void show1();
 4     public abstract void show2();
 5     public abstract void show3();
 6     public abstract void show4();
 7 }
 8 
 9 //為了方便創建Inter接口的子類對象,先創建一個DemoA類實現接口Inter。
10 //因為Demo類創建對象沒有意義。所以將該類抽象。
11 abstract class DemoA implements Inter
12 {
13     public void show1(){}
14     public void show2(){}
15     public void show3(){}
16     public void show4(){}
17 }
18 
19 class DemoB extends DemoA
20 {
21     public void show1()
22     {
23         System.out.println("Inter show1 ......");
24     }
25 }
26 
27 class InterfaceDemo3
28 {
29     public static void main(String[] args) 
30     {        
31         DemoB s1 = new DemoB();
32         s1.show1();
33     }
34 }

  代碼運行

  

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM