Java編程語言中,介面是一種定義了一組方法(僅有方法聲明,無任何方法實現的定義)的集合,這些方法的訪問修飾符都是public,可以被其他程序調用。實現介面中的所有方法,這樣的類被稱為實現類。和許多面向對象編程語言一樣,Java 是為了實現代碼重用而引入介面這一概念。
一、介面的定義與繼承
介面定義了一組方法的規範,沒有提供任何方法的實現,這些方法會作為規範被其他類實現,實現這些方法的類就可以向外界提供這些方法的實現。 介面定義的方法默認使用public abstract修飾符,public abstract可以省略。
例子:
interface Animal{ void eat(); void sleep(); } public class Dog implements Animal{ public void eat(){ System.out.println("Dog eats meat."); } public void sleep(){ System.out.println("Dog sleeps soundly."); } }
找到實現類Dog,它必須實現Animal介面的所有方法,否則編譯器將發現一個編譯時錯誤。在方法中,我們實現了eat和sleep方法,Dog類現在可以作為Animal類型使用,例如:
class Test{ public static void main(String[] args){ Animal a = new Dog(); a.eat(); a.sleep(); } }
在Java編程中,介面可以被其他介面繼承。
例子:
interface Animal{ void eat(); void sleep(); } interface Lion extends Animal{ void roar(); }
Lion繼承Animal介面,可以繼承其方法,不需要再重複其框架
二、介面的多重繼承
Java允許一個介面繼承多個介面,稱為多重繼承,並且允許繼承鏈中的同名方法,例如:
interface Animal{ void eat(); void sleep(); } interface Mammal{ void giveBirth(); } interface Dog extends Animal, Mammal{ void bark(); }
這個例子展示了Dog介面多重繼承Animal和Mammal介面,這兩個介面中都有未實現的方法eat() 和sleep(),這樣的介面可以使實現類更加具有靈活性。
三、介面的默認方法和靜態方法
Java 8引進了默認方法和靜態方法的概念,默認方法允許在不破壞已有實現情況下向介面添加新方法。介面中的靜態方法可以在介面中直接調用,而無需實現類。它們都使用default關鍵字來定義。
例子:
interface Vehicle{ void run(); default void stop(){ System.out.println("Stop vehicle."); } static void horn(){ System.out.println("Make noise!"); } } class Bike implements Vehicle{ public void run(){ System.out.println("Bike is running!"); } } class Test{ public static void main(String[] args){ Vehicle v1 = new Bike(); v1.run(); v1.stop(); Vehicle.horn(); } }
在運行main方法後,我們可以看到Bike類實現了介面中的run方法,同時默認方法stop方法的實現也被調用,Vehicle中的靜態方法horn()直接被調用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304114.html