實作意味着它采取接口指定的指定行為。考慮以下接口:
public interface ISpeak
{
public String talk();
}
public class Dog implements ISpeak
{
public String talk()
{
return "bark!";
}
}
public class Cat implements ISpeak
{
public String talk()
{
return "meow!";
}
}
Cat和Dog類都實作了ISpeak接口。
接口的優點是我們現在可以通過ISpeak接口引用這個類的執行個體。請考慮以下示例:
Dog dog = new Dog();
Cat cat = new Cat();
List animalsThatTalk = new ArrayList();
animalsThatTalk.add(dog);
animalsThatTalk.add(cat);
for (ISpeak ispeak : animalsThatTalk)
{
System.out.println(ispeak.talk());
}
此循環的輸出将是:
bark!
meow!
接口提供了一種以通用方式與類互動的方法,基于他們所做的事情,而不暴露實作類是什麼。
例如,在Java中使用的最常用的接口之一是Comparable.如果您的對象實作此接口,您可以編寫一個實作,消費者可以使用該實作來排序對象。
例如:
public class Person implements Comparable
{
private String firstName;
private String lastName;
// Getters/Setters
public int compareTo(Person p)
{
return this.lastName.compareTo(p.getLastName());
}
}
現在考慮這個代碼:
// Some code in other class
List people = getPeopleList();
Collections.sort(people);
這個代碼做的是為Person類提供一個自然的順序。因為我們實作了Comparable接口,我們能夠利用Collections.sort()方法通過自然排序(在這種情況下,按姓氏排序)對Person對象清單進行排序。