Can you say some Real-life examples of interface and abstract class?
本问题已经有最佳答案,请猛点这里访问。
我对理解C中接口和抽象类的实际示例有点困惑#
你是指"一个包含抽象类或接口的实时软件系统"中的真实世界,还是指"一个证明其有用性的人为例子"?
如果你的意思是后者,把车辆看作是一个抽象类。你还不能用它做任何事情,因为你不知道它做什么,也不知道如何驾驶它。
抽象类车辆
车辆可以分为电动和踏板驱动,但这仍然是抽象的,我们仍然不知道如何处理它。
1 2 3 | abstract class MotorVehicle : Vehicle {} abstract class PedaledVehicle: Vehicle {} |
现在可以定义一个具体的(非抽象的)类,比如car。
1 | class MotorCar : MotorVehicle {} |
intefaces非常有用,您只能从一个基类继承它。所以想象一下,有些车辆是可以驾驶的,有些是遥控的,有些车辆使用的是方向盘,有些则不使用。
1 2 3 | interface IDrivable{} interface IHasStearingWheel{} |
现在,您可以从其基类派生一个DrivableMotorCar,并实现其他行为。
1 | class DrivableMotorCar : MotorVehicle, IDrivable, IHasStearingWheel {} |
是的,这可能会让一些人困惑:)
一个没有实现的抽象类看起来像一个接口。但还是有些不同。
无法实例化抽象类。它曾经是任何继承类的基类。它是继承自它的其他类的契约,强制所有子类执行相同的标准。
接口根本不是类。它没有实现。我认为主要的区别是类可以实现多个接口,但只能实现一个类。