Определенные ответы затруднены, потому что они действительно зависят от особенностей вашей проблемной области, но в целом вы бы использовали подклассы 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
. Однако, когда вы получите ссылку из этой коллекции, вы не сможете OpenAllFourDoors
или OpenAllTwoDoors
, потому что не будете знать, с каким подклассом Car
вы работаете.
(Извинения за C # -центрический синтаксис)