gpt4 book ai didi

java - 为什么可以将变量赋值给接口(interface)类型?

转载 作者:行者123 更新时间:2023-12-01 07:52:13 28 4
gpt4 key购买 nike

我是 Java 新手,正在尝试学习接口(interface)的概念。我在网上看到了下面的代码。我知道接口(interface)无法实例化。我的问题是,WatchService、Path、WatchKey和WatchEvent都是接口(interface),为什么变量可以分配给接口(interface)类型?和实例化一样吗?

import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;

public class WatchServices {

public static void main(String[] args) throws IOException {
WatchService ws1 = FileSystems.getDefault().newWatchService();

Path p1 = Paths.get("/Users/justin/Desktop/Codes Netbean/JavaRandom");

WatchKey wk1 = p1.register(ws1, ENTRY_CREATE);

while(true){
for(WatchEvent<?> event : wk1.pollEvents()){
System.out.println(event.kind());
Path file = (Path)event.context();
System.out.println(file);
}
}
}
}

最佳答案

我会用一个例子来回答你。

假设我请你给我带一个sphere 。然后你给我带来一个沙滩球。

球体并不存在,它是一个概念,一个几何对象,而沙滩球是一个可以被视为球体的物质对象。

这几乎是同一件事,接口(interface)通过其公开的接口(interface)定义对象的特征(可以在假装实现的对象上调用的方法)接口(interface)),但它本身并不是一个物质对象。

因此,即使球体不存在,我也可以将沙滩球视为球体。实例化球体没有任何意义,因为球体无法实例化,但我可以将沙滩球视为球体。

关于java - 为什么可以将变量赋值给接口(interface)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352254/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com