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

时间:2010-04-29 14:34:04

标签: oop inheritance namespaces

我有多种对象,例如Car

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

我是否将它们置于cartype命名空间下,以免弄乱主命名空间?

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

2 个答案:

答案 0 :(得分:5)

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

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的哪个子类。< / p>

(对于C#中心语法抱歉)

答案 1 :(得分:1)

只要您没有与之冲突的覆盖方法,您就可以拥有从Car类继承的无限数量的类。

对于命名空间,我通常将从另一个继承的类放在同一个命名空间中,不确定是否在同一个命名空间中工作。

哦,当你需要一个数组时,你就像任何其他数据类型一样声明它。

您可以看到,当您声明Car类时,您将创建一个数据类型Car。

所以当你需要声明一系列汽车时,你会这样:

var currentCars():Car