我想提交一個面向對象的問題。也許它已在其他地方解決,但我沒能找到它......取消允許一個圓形實例接受三維點爲中心
想象這樣的事情(蟒蛇般的僞代碼)
class Point:
x: int
y: int
# Some methods here
class Point3D(Point):
z: int
class Circle:
center: Point
radius: int
# Some methods here
class Sphere(Circle):
center: Point3D
在staticly類型langage - 除非我請輸入一個錯誤 - Point3D
實例將作爲center
屬性傳遞給Circle
,因爲它從Point
繼承,因爲它將變成類似Sphere
的狀態,因此它必須被禁用。
我們怎樣才能做到這一點不失方法因式分解?
非常清楚,謝謝你的解釋!但是我正在考慮使用抽象超類來[[幹]](https://en.m.wikipedia.org/wiki/Don%27t_repeat_yourself)...(現在甚至可以在Python中用ABC也叫抽象基類)抽象類不能是實例化的,'Point2D'和'Point3D'不能互相繼承,所以LSP是受到尊重的。你的意見? –
是的,只要你注意在基類中只包含兩類實際共有的東西,那將是有效的。 – Quentin