1. 程式人生 > 實用技巧 >Java從入門到實戰之(15)面向物件之介面(三)

Java從入門到實戰之(15)面向物件之介面(三)

Java面向物件-介面

介面定義:一種特殊的“抽象類”,沒有普通方法,由全域性常量和公共的抽象方法所組成;

1,介面的定義

介面定義用關鍵字 interface

我們給下例項程式碼:

 1 package com.java1234.chap03.sec12;
 2  
 3 /**
 4  * 定義一個介面A
 5  * @author user
 6  *
 7  */
 8 public interface A {
 9  
10     /**
11      * 全域性常量
12      */
13     public static final String TITLE="hello";
14 15 /** 16 * 定義一個抽象方法 abstract可以省略 17 */ 18 public abstract void a(); 19 }

注意點:由於接口裡的方法都是抽象的,所以abstract可以省略,實際開發一般都是省略的,開發者的習慣;

2,實現介面 可以實現一個或者多個介面

實現介面我們用implements關鍵字,我們來搞一個測試方法:

 1 package com.java1234.chap03.sec12;
 2  
 3 public class Test implements A{
 4  
 5     @Override
6 public void a() { 7 System.out.println("a方法"); 8 } 9 10 public static void main(String[] args) { 11 Test t=new Test(); 12 t.a(); 13 System.out.println(Test.TITLE); 14 } 15 }

實現介面 ,類裡要實現接口裡的抽象方法;

執行輸出:

a方法

hello

為了演示實現多個介面,我們這裡再定義一個介面:

 1 package
com.java1234.chap03.sec12; 2 3 /** 4 * 定義一個介面B 5 * @author user 6 * 7 */ 8 public interface B { 9 10 /** 11 * 全域性常量 12 */ 13 public static final String TITLE2="java知識分享網"; 14 15 /** 16 * 定義一個抽象方法 abstract可以省略 17 */ 18 public abstract void b(); 19 }

我們修改下Test類:

 1 package com.java1234.chap03.sec12;
 2  
 3 public class Test implements A,B{
 4  
 5     @Override
 6     public void a() {
 7         System.out.println("a方法");
 8     }
 9      
10     @Override
11     public void b() {
12         System.out.println("b方法");
13     }
14  
15     public static void main(String[] args) {
16         Test t=new Test();
17         t.a();
18         t.b();
19         System.out.println(Test.TITLE);
20         System.out.println(Test.TITLE2);
21     }
22  
23      
24 }

實現多個介面,中間用逗號隔開,並且實現所有抽象方法

執行輸出:

a方法

b方法

hello

java知識分享網

3,繼承類和實現介面 先繼承,後實現介面

我們先定義一個類C:

1 package com.java1234.chap03.sec12;
2  
3 public class C {
4  
5     public void c(){
6         System.out.println("c方法");
7     }
8 }

我們再修改下測試類Test 繼承C類,實現A,B介面,這裡有個注意點,java規範,必須先繼承後實現介面;

我們上下程式碼:

 1 package com.java1234.chap03.sec12;
 2  
 3 public class Test extends C implements A,B{
 4  
 5     @Override
 6     public void a() {
 7         System.out.println("a方法");
 8     }
 9      
10     @Override
11     public void b() {
12         System.out.println("b方法");
13     }
14  
15     public static void main(String[] args) {
16         Test t=new Test();
17         t.a();
18         t.b();
19         t.c();
20         System.out.println(Test.TITLE);
21         System.out.println(Test.TITLE2);
22     }
23  
24      
25 }

執行輸出:

a方法

b方法

c方法

hello

java知識分享網

4,介面的繼承 介面可以多繼承

我們定義一個D介面 繼承A,B介面

1 package com.java1234.chap03.sec12;
2  
3 public interface D extends A,B{
4  
5     public void d();
6 }

這裡再加一個d方法;

我們重新搞一個測試方法 繼承C類,實現D介面:

 1 package com.java1234.chap03.sec12;
 2  
 3 public class Test2 extends C implements D{
 4  
 5     @Override
 6     public void a() {
 7         System.out.println("a方法");
 8     }
 9  
10     @Override
11     public void b() {
12         System.out.println("b方法");
13     }
14  
15     @Override
16     public void d() {
17         System.out.println("d方法");
18     }
19  
20     public static void main(String[] args) {
21         Test2 t=new Test2();
22         t.a();
23         t.b();
24         t.c();
25         t.d();
26         System.out.println(Test2.TITLE);
27         System.out.println(Test2.TITLE2);
28     }
29 }

執行輸出:

a方法

b方法

c方法

d方法

hello

java知識分享網

注:

Java中介面不能被例項化的