我是 java 和学习界面的新手。除了标准化期望之外,我不理解接口(interface)的使用。
如果有任何其他用途,请帮助我理解。
最佳答案
接口(interface)有一些很好的用途:
多态性
它们允许您以相同的方式处理几个不同但相似的对象。例如:
public interface Flyer {
public void fly();
}
public class Bird implements Flyer {
@Override
public void fly() {
System.out.println("I'm flying");
}
}
public class Airplane implements Flyer {
@Override
public void fly() {
System.out.println("I'm inanimate and flying");
}
}
// then you can have a method like so:
public void makeFly(Flyer flyer) {
flyer.fly();
}
// or make a list like so:
List<Flyer> fliers = Arrays.asList(new Airplane(), new Bird());
它们还允许对象适合几个不同的盒子。例如,Bird
不仅是苍蝇,而且是Animal
。接口(interface)允许您处理 Bird
作为其中之一:
public interface Animal {
public void move();
}
public class Bird implements Flyer, Animal {
@Override
public void fly() {
System.out.println("I'm flying");
}
@Override
public void move() {
fly();
}
}
// now I can do:
Bird bird = new Bird();
Flyer flyer = new Bird();
Animal animal = new Bird();
解耦设计
此外,它们还使您可以灵活地选择实现方式。 (我不确定你所说的“标准化期望”是什么意思,但这种用法可能最与标准化相关。也就是说,这有效因为它创建了一个标准。)例如,假设我有一个返回 List<Flyer>
的方法。 。自 List
是一个接口(interface),我可以选择使用ArrayList
, LinkedList
等作为我的实现:
public List<Flyer> makeFlyerList() {
return new ArrayList<Flyer>(Arrays.asList(new Airplane(), new Bird()));
}
// works just the same
public List<Flyer> makeFlyerList() {
return new LinkedList<Flyer>(Arrays.asList(new Airplane(), new Bird()));
}
关于java - 除了标准化期望之外,接口(interface)(Java 中)还有其他用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11169518/