Java從入門到實戰之(15)面向物件之介面(三)
阿新 • • 發佈:2020-10-13
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 @Override6 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 packagecom.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中介面不能被例項化的