![]() |
1
0
我的印象是使用
|
![]() |
2
3
你不能也不应该… 这是为了保护你自己:) 要么加速不可控制只能在Toyotas中完成(但不能在其他车型中完成),然后定义是正常的,您应该首先检查汽车是否确实是丰田,或者所有的汽车都可以“加速不可控制”,然后声明应该在汽车类中。 当然,你可以做一个演员…但问问你自己…如果你知道你得到的子类型…你为什么收到一辆车而不是丰田?? 编辑: 我还是不明白为什么你不能把它编辑成:
现在,您正在针对行为属性编程,某个给定对象可以或不能执行的操作…因此,您不需要强制转换,而且至少在某些情况下,函数的含义更为合理。 从语义角度看 …… |
![]() |
3
3
你可以避免不雅 downcasting 并打破 Liskov Substitution Principle 通过这样的公共接口进行简单授权:
现在ToyataDriver不知道简单的加速就是不可控制的加速:
还要注意 任何 发现自己与丰田汽车对象在一起的驾驶员对象可能会体验到相同的效果:
这是一个想法:Toyata汽车把自己呈现给一个司机仅仅是一辆“汽车”,而不是一辆“无法控制的汽车”。司机并没有耦合到无法控制的加速接口上,即 不知道 接下来会发生什么。一旦他们称之为加速,假设这样做不会导致系统崩溃,我们可能会看到一个罕见的推论,里斯科夫替代原则,普遍召回原则。 |
![]() |
4
1
在我看来,你需要另一种类型的汽车,它需要扩展到一种汽车,它可以加速不可控制,然后丰田从中继承。 通过你的设计,你是说不是所有的汽车都能加速失控,打破这是打破你的OO,是一个不-不…对押韵感到抱歉。 |
![]() |
5
1
我认为
如果
|
![]() |
6
-1
您可以使用以下模式com:
基本思想是在基类中定义一个虚拟方法,该方法表示一个接受类型标记并返回指针的“downcast”函数。如果返回的值不为空,则意味着可以安全地将其向下转换为与该标记匹配的类型。 派生类重写该方法,检查其类型标记,如果匹配则返回有效指针。 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |