如何在OOP中实现多种对象?

Rob*_*cks 0 oop inheritance namespaces

例如,我有多种物体Car.

我是否在继承的类/子类中有各种类型Car

我是否将这些放在cartype命名空间下,以免弄乱主命名空间?

后来当我需要一系列汽车时,我应该将其声明为var currentCars():Carvar currentCars():Object?前者会支持Car的任何子类吗?

Gre*_*g D 5

具体答案很难,因为它们实际上取决于您的问题空间的细节,但一般来说,Car如果所有类型Car共享某些功能,您将使用子类.例如:

public class Car {
    public void Start() { }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以有不同类型的Car:

public class Sedan : Car {
    public void OpenAllFourDoors() { }
}

public class Coupe : Car {
    public void OpenAllTwoDoors() { }
}
Run Code Online (Sandbox Code Playgroud)

您通常不需要将类层次结构放入其自己的命名空间中,还有其他一组命名空间定义指南.通常,期望名称空间采用类似CompanyName.ProductName.ModuleName之类的形式.

之后,当您需要一个汽车阵列(或更常见的集合)时,您将创建一个集合Car.但是,当您从此集合中获取引用时,您将无法OpenAllFourDoorsOpenAllTwoDoors因为您不知道Car您正在使用哪个子类.

(对于C#中心语法的道歉)