- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我没有理解多态性。
以这个例子为例:
Object o = new String ("foo");
我做不到
o.substring (1,2)
谁能给我解释一下这个问题?
最佳答案
这是 Liskov Substitution Principle 的结果,其中指出(总结):
If S and T are objects, and T is a subtype of S, then T may be used where S is expected.
String
是 Object
的一个子类型,因此如果您的赋值操作需要 Object
,那么它将愉快地接受 Object
或其任何子类型。
(注意:Object
不是 String
。所有String
都是Object
,但并非所有 Object
都是 String
。)
这并不意味着您可以访问子类型的任何 方法。在给定继承层次结构的情况下,Object
对其子类的任何特定方法一无所知,也不可能 - 无法将其后代的功能告知祖先类。因为 Object
没有与之关联的 substring
方法,所以您的代码会正确地导致编译失败。
(并且它应该,因为 Object
是所有类的祖先。不能保证任何给定的 Object
都是 字符串
.)
长期的建议是不要使用过于不明确的对象类型(随着层次结构链的上升,功能变得不那么具体 - 当您上升到 Object< 时,您会失去功能
) 来完成更具体类型的特定内容。
关于java - 多态对象字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840749/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!