我有多种对象,比如 Car
例如。
我在 Car
的继承类/子类中有每种类型吗? ?
我是否将这些放在 cartype
下?命名空间以免弄乱主命名空间?
然后当我需要一系列汽车时,我应该将其声明为 var currentCars():Car
或 var currentCars():Object
?前者会支持 Car 的任何子类吗?
最佳答案
具体答案很难,因为它们确实取决于您的问题空间的细节,但通常您会使用 Car
的子类。如各种Car
共享一些功能。例如。:
public class Car {
public void Start() { }
}
然后你可以有不同类型的
Car
:public class Sedan : Car {
public void OpenAllFourDoors() { }
}
public class Coupe : Car {
public void OpenAllTwoDoors() { }
}
您通常不需要将类层次结构放入其自己的命名空间中,还有其他一些命名空间定义指南。通常,命名空间采用 CompanyName.ProductName.ModuleName 或类似的形式。
稍后,当您需要一个汽车数组(或更常见的是一个集合)时,您将创建一个集合
Car
.但是,当您从该集合中获取引用时,您将无法 OpenAllFourDoors
或 OpenAllTwoDoors
因为你不知道 Car
的哪个子类你正在与。(对以 C# 为中心的语法表示歉意)
关于oop - 如何在 OOP 中实现多种类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738154/