use*_*505 4 c# abstract-class interface c#-8.0
在我看来,C# 8.0 特性,默认接口成员实现,本质上允许在接口级别创建实现。结合一个类可以实现多个接口的事实,它似乎非常接近类的多重继承结构。据我了解,这似乎与语言设计的核心背道而驰。
这种差异来自哪里,这为实际的抽象类留下了什么空间?
这个问题已被建议作为我的答案,虽然它很有用,但并不能完全回答我的问题。更准确地说:
我一直认为单继承是 C# 设计的核心原则之一
这只是不准确。单继承是设计目标的一种手段,但本身并不是目标。
这就像说自动变速器是汽车制造商的核心设计原则,而实际目标是让汽车更轻松、更安全。从汽车市场来看,手动变速器在低端(因为它们更便宜)和高端(高性能跑车)市场上仍然蓬勃发展,它们非常适合用途。这些地区的许多模型仍然可以使用任何一种类型的传输。
C# 中导致单继承的实际设计目标更多是关于内存访问和重载解析的安全性和正确性。与单继承相比,多继承很难在数学上验证这些事情。但是,当他们找到优雅的解决方案时,C# 设计人员添加了许多扩展单继承范围的功能。除了接口之外,我们还有部分类、泛型(以及后来的协变/逆变)和委托成员,这些都朝着这个方向发展。
在这种情况下,默认实现在安全地提供弱多重继承方面是有效的,因为继承的功能不会从两个方向沿继承树向下级联。您不能通过继承具有不同接口实现的两个不同类来创建冲突;您只能使用自己的类实现、默认实现或通过继承可用的单个实现。
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |