C# 名称空间、类、对象和实例之间有什么区别?
我读的是Heads First C#(它非常有趣,而且用户友好),但我想知道是否有人有一个有用的隐喻来描述名称空间、类、方法、属性等是如何“组合在一起”的 类是父类,方法是子类,还是更复杂 一个名字空间可以是一所房子,一个班级可以是一个房间(浴室),一个方法可以是在那个房间里做什么(洗漱等),属性可以是做那个活动时可以做什么,使用肥皂,热水C# 名称空间、类、对象和实例之间有什么区别?,c#,oop,namespaces,C#,Oop,Namespaces,我读的是Heads First C#(它非常有趣,而且用户友好),但我想知道是否有人有一个有用的隐喻来描述名称空间、类、方法、属性等是如何“组合在一起”的 类是父类,方法是子类,还是更复杂 一个名字空间可以是一所房子,一个班级可以是一个房间(浴室),一个方法可以是在那个房间里做什么(洗漱等),属性可以是做那个活动时可以做什么,使用肥皂,热水 …我去拿外套 将类视为对象的描述,将方法视为对象可以执行的操作 例如,我设计了一辆新车。该车的平面图或蓝图(类)用于创建实际的物理车(对象)。这些计划表明,
…我去拿外套 将类视为对象的描述,将方法视为对象可以执行的操作 例如,我设计了一辆新车。该车的平面图或蓝图(类)用于创建实际的物理车(对象)。这些计划表明,汽车应该有一个功能喇叭。因此,我设计了汽车喇叭功能(一种方法)。这些计划还表明,汽车有四个轮子。车轮将是汽车的一个属性,其实例化值(创建对象时指定给该属性)为4。颜色是另一种可能的属性。属性描述对象的质量或特征(颜色、高度、宽度等) 现在,我为丰田工作(不是真的,但请容忍我)。丰田将是包含我的汽车蓝图的名称空间。由于福特、通用汽车等公司都可以拥有自己的汽车设计(类别),以及相同的名称(汽车)和方法(喇叭),丰田、福特和通用汽车的名称空间将这些蓝图(类别)分开并区分开来,因为当应用程序中的类和方法具有不同的名称空间时,它们可以具有相同名称的多个版本 希望能有所帮助。我想说:
- 名称空间:汽车的类别或品牌。请注意,品牌确实不必决定汽车的制造方式。你不能说本田总是有四门,或者说它总是有四轮驱动。这些细节由全班自行决定。很好地解释了名称空间的用途
- 课程:如何制造特定汽车的蓝图
- 对象:根据汽车蓝图(类)创建的实际汽车(实例)
- 方法:汽车用户可以做到的事情<代码>启动(),
,增加油门()
,制动()
,等等开门()
- 属性:汽车包含的属性、信息和构造块。例如,总行驶里程、颜色、方向盘尺寸、立体声系统等
- 继承:当一个类基于另一个类并添加一些更具体的细节时。继承线通常从最常见和最普遍的方面开始,一直延伸到一个更具体的点。动物方面的例子:动物->哺乳动物->啮齿动物->老鼠->鼠类
- 聚合:用于“构建”对象的属性。例如,“这辆车由四个轮子、一个底盘、一个发动机等组成”
- 属性:描述对象的属性,通常不是其物理构造的一部分。例如颜色、最高转速、发动机容量等
- 封装:对用户隐藏某些属性,或保护某些属性不被错误使用(从而损坏对象)的概念。例如,你不能随意改变汽车等级的档位特性。封装它并确保在
之前调用SetGear()
Clutch()
- 重写:如果一个类从另一个类继承,它也从该类继承方法。重写基本上是当继承类用自己所需的行为替换此类方法的实现时。下一点中的用法示例
- 多态性:一个很难理解的概念,直到你开始实际使用它。它意味着引用一种非常特定的对象,通过使用一个通用引用,它允许您忽略特定的类型(当您不需要知道它时)。例如,如果你想“读取”停车场中每辆车的车牌号属性,你并不真正关心该品牌是什么,甚至不关心它是拖车、摩托车还是其他品牌。为了能够做到这一点,我们确保车牌号是继承行中最普通类(可能是
类)中的一个属性。因此,您只需将列表中的所有对象作为其车辆
类引用,然后调用Vehicle
即可处理它们。任何需要特殊处理以检索号码的车辆都可以通过覆盖该方法来实现此行为,并使其按要求运行。因此,可以像使用相同类型的对象一样使用各种对象类型,但其行为可能有所不同Vehicle::GetLicensePlateNumber()
Cat
和Dog
类可以放在名称空间Animals.Pets
中。尽管名称空间是分层的,但这并不意味着类