您可以声明一个接口,就像在您的示例中一样。但是,您不能实例化一个。
MyInterface shoe = new MyInterface ();
以上不是合法代码。由于接口只是描述一个合约,它没有实现细节,这留给客户端代码(你)。因此,能够创建 MyInterface 的实际实例是没有意义的。
你可以做的是有一个类 SomeClass,实现 MyInterface 契约:
SomeClass: MyInterface
{
//implement the methods of MyInterface. All of them, to fulfill the contract.
}
然后您可以执行以下操作:
MyInterface shoe = new SomeClass();
由于 SomeClass 实现了 MyInterface 合约,所以上面是合法的。您可以创建 SomeClass 的实例,因为它包含实现细节。
然后您可以在此基础上构建并创建更多实现 MyInterface 的类。
这样做的好处是你可以有一个方法,例如:
void someMethod (MyInterface test)
{
}
您可以将此方法传递给 SomeClass 对象或您创建的任何其他实现 MyInterface 的类。
然后在这个方法中,你可以在不知道传递给你的确切对象的情况下调用合约包含的方法。这使得编写未来的代码更容易。您可以创建新对象,只要它们实现 MyInterface,就可以将此对象传递给 someMethod 而无需更改方法的声明。