java - 除了标准化期望之外,接口(interface)(Java 中)还有其他用途吗?

标签 java interface

我是 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/

相关文章:

java - 数据库不存储查询

java - MQ CCDT AMQ9516 FileNotFoundException

Java 面向对象编程多个类实例

javascript - TypeScript接口(interface)签名 "(): string"

java - 如何使用 Apache HttpClient 使用代理在 Java 中加载 URL?

java - 在不移动迭代器的情况下从链表返回值

java - 如何在Java中使用通用接口(interface)获取实现类中的方法

使用 AsyncTask 和 Interfaces 的 Android 程序崩溃

go - 将值设置为继承字段

java - Android 访问使用 -e 发送的数据