类、对象和类成员

1.类与对象的关系

对象也叫实例,是类经过”实例化“后得到的内存中的实体。

  Formally "instance" is synonymous with "object"  ---- 对象和实例是一回事

  "飞机"与"一架飞机"有何区别?天上有(一架)飞机 ---- 必须是实例飞,概念不能飞

  有些类是不能实例化的,比如"数学"(Math class),我们不能说"一个数学"

依照类,我们可以创建对象,这就是"实例化"

  现实世界中常称"对象",程序世界中常称"实例"

  二者并无太大区别,常常混用

使用new操作符创建类的实例

引用变量与实例的关系

  孩子与气球

  气球不一定有孩子牵着,孩子也不一定牵着气球

  多个孩子可以使用各自的绳子牵着同一个气球,也可以通过同一根绳子(ref)牵着同一个气球

Balloon child1;  // 声明了一个引用变量,但未指向任何对象(孩子手里没气球)
//此时 child1 是 null,因为它还没有指向任何 Balloon 对象。
//如果尝试访问 child1 的成员(如 child1.Color),会抛出 NullReferenceException。

=================================================

new Balloon();  // 创建了一个 Balloon 对象,但没有变量引用它
//这个 Balloon 对象在堆上分配了内存,但没有引用变量指向它。
//它会被 垃圾回收器(GC) 回收,因为没有引用可以访问它。

=================================================

Balloon balloon = new Balloon();  // 创建了一个气球
Balloon child1 = balloon;        // 第一个孩子牵着这个气球
Balloon child2 = balloon;        // 第二个孩子也牵着同一个气球
//child1 和 child2 都指向 同一个 Balloon 对象。
//如果通过 child1 修改气球属性(如 child1.Color = "Red"),child2 也会看到变化。

=================================================

//一个孩子通过多根绳子指向同一个气球
int x = 5, y = 10;
Swap(ref x, ref y);  // 交换后 x=10, y=5
 
private void Swap(ref int a, ref int b)
{
    int temp = a;
    a = b;
    b = temp;
}

2.类的三大成员:属性、方法、事件

属性 Property

  存储数据,组合起来表示类或对象当前的状态。

方法 Method

  由C语言中的函数(function)进化而来,表示类或对象"能做什么"

  工作中90%的时间是与方法打交道,因为它是"真正做事"、"构成逻辑"的成员

时间 Event

  类或对象通知其它类或对象的机制,为C#所特有(Java通过其它办法实现这个机制)

  善用事件机制非常重要(切勿滥用)

3.某些特殊类或对象在成员方面侧重点不同

  模型类或对象重在属性,如 Entity Framework

  工具类或对象重在方法,如 Math,Console

  通知类或对象重在事件,如各种 Timer

 

  

posted @ 2025-08-01 10:15  没有伞的孩子_97  阅读(22)  评论(0)    收藏  举报