实现意味着它采取接口指定的指定行为。考虑以下接口:
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对象列表进行排序。