在Java中,兩個類同時實現同一個介面是非常常見的。介面定義了一組方法,實現介面的類必須提供這些方法的具體實現。以下將展示如何實現這一要求,並提供具體的程式碼示例。
示例介面
首先,定義一個簡單的介面,比如一個表示動物的介面,它有一個方法makeSound
:
public interface Animal {
void makeSound();
}
1. 方法一:兩個類分別實現介面
這是最直接的方法,每個類分別提供介面方法的實現。
1.1 類1:Dog
public class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("Dog says: Bark");
}
}
1.2 類2:Cat
public class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("Cat says: Meow");
}
}
1.3 測試程式碼
接下來,可以透過以下測試程式碼來演示介面的實現:
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.makeSound();
myCat.makeSound();
}
}
2. 方法二:使用匿名內部類
如果不想建立具體的類,也可以使用匿名內部類來實現介面。
public class Main {
public static void main(String[] args) {
Animal myDog = new Animal() {
@Override
public void makeSound() {
System.out.println("Dog says: Bark");
}
};
Animal myCat = new Animal() {
@Override
public void makeSound() {
System.out.println("Cat says: Meow");
}
};
myDog.makeSound();
myCat.makeSound();
}
}
3. 方法三:使用Lambda表示式(適用於函式式介面)
如果介面是一個函式式介面(即只有一個抽象方法的介面),可以使用Lambda表示式來實現它。
3.1 修改介面為函式式介面
為了使用Lambda表示式,介面可以保持不變,因為它已經是一個函式式介面(只有一個方法)。
3.2 使用Lambda表示式
public class Main {
public static void main(String[] args) {
Animal myDog = () -> System.out.println("Dog says: Bark");
Animal myCat = () -> System.out.println("Cat says: Meow");
myDog.makeSound();
myCat.makeSound();
}
}
4.總結
透過上述三種方法,可以看到如何在Java中讓兩個類同時實現同一個介面。每種方法都有其適用場景:
(1)直接實現介面:適用於標準的物件導向程式設計。
(2)匿名內部類:適用於需要簡單實現介面但不想建立具體類的場景。
(3)Lambda表示式:適用於函式式介面,可以使程式碼更簡潔。