我有一个接口(移动)应该移动一些形状.
interface Move { move(); }
abstract class Shape : Move
class Circle : Shape
class Square : Shape
class Triangle : Shape
Run Code Online (Sandbox Code Playgroud)
我的疑问是,我必须有一个移动Shapes的界面,但是只能移动Circle和Triangle,那么我如何从Square"移除"界面?我应该从Shape中删除界面并在Circle和Triangle上手动添加它吗?我有点困惑.希望有人可以帮助我.
Mik*_*oud 34
你应该像这样设置你的类:
interface IMovable { move(); }
abstract class Shape : { }
class Circle : Shape, IMovable { }
class Square : Shape { }
class Triangle : Shape, IMovable { }
Run Code Online (Sandbox Code Playgroud)
如果不能移动每个形状,则Shape
不得实现接口.另请注意,我将您的界面重命名为IMovable
,这不是一个大问题,但它更受欢迎,更好的命名约定.
Ode*_*ded 27
您无法从继承树中删除接口.
你的模型似乎需要两个抽象类 - Shape
和MovableShape
.
interface IMove { move(); }
abstract class Shape : {}
abstract class MovableShape : IMove, Shape {}
class Circle : MovableShape{}
class Square : Shape{}
class Triangle : MovableShape{}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2900 次 |
最近记录: |