oop - 如何在 OOP 中实现多种类型的对象?

标签 oop inheritance namespaces

我有多种对象,比如 Car例如。

我在 Car 的继承类/子类中有每种类型吗? ?

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

然后当我需要一系列汽车时,我应该将其声明为 var currentCars():Carvar 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 .但是,当您从该集合中获取引用时,您将无法 OpenAllFourDoorsOpenAllTwoDoors因为你不知道 Car 的哪个子类你正在与。

(对以 C# 为中心的语法表示歉意)

关于oop - 如何在 OOP 中实现多种类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738154/

相关文章:

Python:如何将所有属性从基类复制到派生类

c++11 - 将 C++ 库放在全局命名空间之外

routing - yii2 中的未知类异常的 404 错误

PHP:从变量值请求静态属性

matlab - 如何在 MATLAB 中获取枚举的名称

java - Super() 关键字...它可以用来调用多个父类(super class)的构造函数吗?

c++ - 如何确保继承类正在实现友元函数(ostream)?

c++ - 在命名空间中定义类的方法

c# - 动态可交换数据访问层

PHP:数据库连接类构造方法