Tie*_*eme 5 abstract-class objective-c
因为在objective-c中创建抽象类是不可能的,我想知道是否有人能告诉我为什么 objective-c的创建者没有将这个功能添加到该语言中.
*当然有一些解决方法来创建一个抽象类 - 但这不是我的意思.
如果你的意思是为什么你不能声明一个类抽象,而不是仅仅将它实现为一个抽象类,我想这是因为它与Objective-C的极其动态,类型可选,Smalltalky消息传递风格不能很好地交互( Smalltalk没有内置支持来声明它们.例如:
你可能不知道您发送的信息类alloc或init到,所以这将是一个相当薄弱的保证
子类可能仍然需要传递alloc和init提升类层次结构,因此我们需要允许它,使其成为更弱的保证
类别在运行时修改类,使得抽象合同仍然较弱
最后,你最终会得到一个关键字,它与我们现在实现的抽象类大致相同(例如init,如果接收者不是子类,可能会覆盖保释).
只需指定一个契约的类型修饰符就越有用,你依赖静态类型系统就越多 - 但Objective-C的设计并不是那么依赖类型系统,所以将契约放在类型系统中没有那么有用了.其他一些语言.
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |