对象赋值演示
- 使用 Person 类创建一个 p1 对象,将 p1 对象赋值给 p2。
//在 Person.cs 中创建一个打招呼的方法.
public void Hello()
{
Console.WriteLine("我的名字是{0},年龄是{1},性别是{2},地址是{3}。", Name, Age, Gender, Address);
}
//在 Program.cs 中编写主程序.
Person p1 = new Person("Shane", 1, Gender.Girl, "北京海淀");
Person p2;
p2 = p1;
p1.Hello(); //我的名字是Shane,年龄是1,性别是Girl,地址是北京海淀。
p2.Hello(); //我的名字是Shane,年龄是1,性别是Girl,地址是北京海淀。
p2.Name = "ABC";
p1.Hello(); //我的名字是ABC,年龄是1,性别是Girl,地址是北京海淀。
p2.Hello(); //我的名字是ABC,年龄是1,性别是Girl,地址是北京海淀。
Console.ReadKey();
- 说明
- 堆空间存储对象相关信息(字段,属性,方法等),栈空间存储地址。p1和p2任何一个对对象进行修改,对于另一个来说,对象也是被修改的了。
- 对象这种 “数据” 也是引用类型。赋值的过程是在传递堆空间的引用地址,p1和p2指向了同一个堆空间地址,通过p1或p2修改了对象中的数据,两个对象都会同时发生改变。
对象的实例化过程
Person p1 = new Person("Shane", 1, Gender.Girl, "北京海淀");
Person p3 = new Person();
- 我们现在实例化对象,有两种方式。
- 调用有参的构造方法实例化对象。
- 调用无参的构造方法实例化对象。
- 我们在写类的时候,往往先写一个无参的构造方法,然后再写其他有参的构造方法,方便使用。
- new 实例化关键字的作用
- 在内存(堆空间)中开辟了一块空间;
- 在开辟出来的空间中创建对象数据;
- 调用类的构造方法进行对象的初始化。
面向对象编程
- 我们游戏中的一切,都是对象。
- 为了创建这些对象,我们需要实现针对不同的对象写出相应的类。在类中规划好这个对象的基本信息和功能作用。
- 然后实例化对象,在对象与对象之间进行相应的交互。