函数的返回值怎么可以是接口?这不是将接口实例化了吗?居然还在后面的代码中用该返回的接口.方法名调用

2024-12-15 11:41:04
推荐回答(4个)
回答1:

这个地方返回的不是一个单纯的接口.
而是返回了一个实现该接口的类的实例.....
public class A : InterfaceA
{
//实现接口方法
public void DoThing(){};
}

public class B
{
public InterfaceA ReturnInstance(){
InterfaceA A = new A();
return A;
}
}

当调用B类的ReturnInstance函数时,你看到返回值是一个接口.InterfaceA.但是其实这个地方是一个类似C的指针...具体的其实是返回了一个实现接口类A的实例.
调用的方法,就是类A的DoThing的方法.

回答2:

但是该接口肯定在函数里面指向它的实现类了。

回答3:

Node接口只不过用来当做接收的类型而已!根本就没实例化,而后面调用后面的方法只不过调用的事nodelist1实例的方法

回答4:

建议去看一下多态,比如说考虑下面的代码:
interface Api {
public void show();
}

class A implements Api {
public void show() {
System.out.println("This is A");
}
}

class B implements Api {
public void show() {
System.out.println("This is B");
}
}

public class Test {
public static Api creatApi(int i) {
Api api = null;
if (i == 1)
return api = new A();
else
return api = new B();
}

public static void main(String[] args) {
Api api = Test.creatApi(0); //参数为1时候输出:"This is A"。
api.show();
}
}