我有一个持久对象,为了这个问题,我会开车CAR类。关于继承和OOP的问题c#
public class Car
{
public string model {get;set}
public int year {get;set}
}
明显极其简化。
现在,随着代码的开发,我自然创建了一个接受CAR作为参数的函数。例如:
public void PaintCar (Car theCar)
{
//Does some work
}
到目前为止好,但后来我有地方,我需要另一个类,这是非常类似的车的场景,但车是缺少一些领域。没问题,我认为OOP救援,我就从车继承,直到结束:
public class SuperCar : Car
{
public string newProp {get;set}
// and some more properties
}
再次一切都显得桃色的,直到我碰到一个非常有用的实用功能来我用填充汽车原始属性。
Public void SetCarProperties(Car theCar)
{
//sets the properties for car here
}
我想嗯,我希望我可以使用相同的功能来设置我的superCar类的属性,而不需要重写。我也不想改变基本汽车定义以包含superCar类的所有属性。
在这一点上,我遇到了一个困境。重写会起作用,但这是额外的工作。有没有更优雅的解决方案?基本上我想通过超类传递一个期望基类的函数。这可能与C#?
我的最终代码的结果会是这样的:
Car myCar = new Car();
SetCarProperties(myCar); // ALL GOOD
SuperCar mySuperCar = new SuperCar();
SetCarProperties(mySuperCar); // at the moment this function is expecting type Car...
我认为在Car类中使用'SetCarProperties'方法会更合适,并且可以在子类SuperCar中覆盖它。 – NullUserException
如果不是的话,我认为覆盖将是一个最干净的解决方案。 – NullUserException