|
1
|
| Barbaros Alp · 技术社区 · 16 年前 |
|
|
1
10
差异仅在于声明的变量类型。然后每当使用表达式时,编译器都将使用该类型
相反,对于
使用第一个声明,还可以将变量重新赋给对实现类型的任何其他对象的引用
而对于第二个声明,只能分配与
通常,将代码编写到接口而不是特定的实现是有利的。这意味着编译器将阻止您使用特定于实现的细节,而这又意味着将来更容易更改为其他实现。 变量的类型也会影响过载分辨率:
根据是否调用不同的方法
基本上,变量的编译时类型在所有方面都很重要-几乎每次使用变量时,代码含义的某些方面都取决于变量的类型。 |
|
|
2
1
如果foo是ifoo类型,并且foo实现了ifoo中未定义的方法或属性,则除非将foo强制转换为foo,否则无法访问这些方法或属性。 如果foo是ifoo类型,则可以实例化其他类型,这些类型也从ifoo中插入,并将其分配给foo。它更抽象,所以您并不具体依赖于foo类型。 |
|
|
3
0
第一个例子是实现ifoo的某个对象的实例。 第二个例子是一个foo对象的实例。 |
|
EarthTurtle · 调整泛型抛出迭代器的异常类型 2 年前 |
|
wallop · 实现必须明确提及所有接口字段,还是可以跳过它们? 2 年前 |
|
|
Reelie · C#11-通过抽象类在接口中静态抽象成员? 2 年前 |
|
Addem · 在OCaml签名中放入类型声明的正确方法是什么 2 年前 |