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-hant/n/304114.html