这个地方返回的不是一个单纯的接口.
而是返回了一个实现该接口的类的实例.....
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的方法.
但是该接口肯定在函数里面指向它的实现类了。
Node接口只不过用来当做接收的类型而已!根本就没实例化,而后面调用后面的方法只不过调用的事nodelist1实例的方法
建议去看一下多态,比如说考虑下面的代码:
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();
}
}