五、引用类型与值类型
.NET将变量的类型分为值类型与引用类型。例如int和float之类的变量属于值类型,而“类“类型的变量属于引用类型。
值类型与引用类型的变量在使用上是有区别的。
值类型的变量在一定义之后就可以马上使用。
引用类型的变量定义之后,还必须用new关键字创建对象后才可以使用。
如上图,创建两个新的对象时,直接比较两个对象是否相等,返回的bool值为false.因为两个对象都是新开辟的一个空间变量,彼此没有任何关系,所有是不相等的。
如图2:1)创建的第一个新的对象ss1,给ss1中的属性分别赋值;再创建第二个新的对象ss2,直接比较ss1和ss2,仍然不相等;
2)但是,当执行”ss2=ss1“时,把对象ss2指向ss1,就把ss1的值赋给ss2,这时候比较时,返回的是true;
3)当打印ss2.Name,输出就是ss1.Name的值;
4)再次给ss2.Name赋值时,输出是ss1.Name的值;
ss1=ss2后,两个变量表示的是同一个对象,好比是一个人有两个“名字”
六、命名空间与类库
1、命名空间:又称程序集,相当于一个文件夹,里面包含好多的类(文件)。
2、类库:许许多多的类组合在一起,就相当于好多文件组成一个压缩包。
七、继承
在构成继承关系的两个类中,一个被称为父类或基类,另一个被称为子类。如下图:
【重点理解】:1)子类包含弗雷德所有属性和方法;
2)所有的子类都可以直接转换成父类类型;
3)当父类类型变量里面存的是某个子类的对象的时候,才能转换成那个子类类型。
举例说明:
【例1】:1)创建一个Ren类的对象,其字段属性包含Name,Sex;(运用封装字段)方法为“会说话!”
2)创建一个Men类的对象作为Ren类的子类,其字段属性继承Ren类的属性Name,Sex,方法为“会赚钱”;
class Man:ren//Man代表ren的子类
{
//方法为“会赚钱”
public void ZhuanQian()
{
Console.WriteLine("赚钱养家");
}
}
3)在主函数中,如何体现父类与子类的继承关系;通过强制转换,子类对象转换为父类,然后再从父类转换成子类时的属性不会缺失(必须在某个子类存在其父类当中的前提下);
【注意】:一个父类可以包含多个子类;但一个子类只能对应一个父类;父类与子类可以理解为一对多的关系。只有子类转化为父类的,才可以从父类转化成子类!