Java 理解接口引用变量有困难
作为一个来自C语言的人,我正在努力理解这段代码背后的逻辑 因此,在Java 理解接口引用变量有困难,java,variables,interface,Java,Variables,Interface,作为一个来自C语言的人,我正在努力理解这段代码背后的逻辑 因此,在Impler类中,我声明了一个Clicker类型的变量,它是一个接口。当实例化Impler类时,我将传递Main实例并将其分配给该变量(我不知道这一点及其工作原理),然后使用Main中编写的抽象方法 实现Impler.Clicker的主类: public static void main(String[] args) { new Main(); } Main() { new Impler(this); } @O
Impler
类中,我声明了一个Clicker
类型的变量,它是一个接口。当实例化Impler
类时,我将传递Main
实例并将其分配给该变量(我不知道这一点及其工作原理),然后使用Main
中编写的抽象方法
实现Impler.Clicker
的主类:
public static void main(String[] args) {
new Main();
}
Main() {
new Impler(this);
}
@Override
public void toClick(int i) {
System.out.print("clicked on " + i);
}
Impler类:
private Clicker mClicker;
Impler(Clicker clicker) {
this.mClicker = clicker;
mClicker.toClick(3);
}
public interface Clicker {
public void toClick(int i);
}
您遗漏了
Main
类必须实现Clicker
才能编译此代码。除此之外(事实上,这是一个奇怪的设计),你不清楚什么是你不理解的。你在努力理解什么?你准确地描述了正在发生的事情,就是这样。每个Main
都是一个Clicker
,因此只要需要Clicker
的实例,就可以使用Main
的实例。您提供的是Clicker类型的实例,但还没有实例化Clicker。您正在传递此引用,即您的main所在的Clicker实现实例的引用。您是否不了解多态性?