本文共 1214 字,大约阅读时间需要 4 分钟。
public:公有的,在哪都能访问
private:私有的,只有在类的内部才能访问
当我们创建好一个类的对象后,需要给这个对象的每个属性去赋值
我们管这个过程称为对象的初始化
静态和非静态的区别
1)在非静态类中,既可以有实例成员,也可以有静态成员。
2)在调用实例成员的时候,需要对象名.实例成员
在调用静态成员的时候,需要使用类名.静态成员
总结:静态成员必须使用类名去调用,而实例成员使用对象名调用
静态函数中,只能访问静态成员,不允许访问实例成员
实例函数中,既可以使用静态成员,也可以使用实例成员
静态类中只允许有静态成员,不允许出现实例成员
使用:
1)如果你想要你的类当做一个“工具类”去使用,这个时候可以考虑将类写成静态的
2)静态类在整个项目中资源共享
只有在程序全部结束后, 静态类才会释放资源
堆 栈 静态存储区域
释放资源,GC Garbage Collection 垃圾回收器
构造函数
作用:帮助我们初始化对象(给对象的每个属性依次赋值)
构造函数是一个特殊的方法
1)构造函数没有返回值,连void都没有
2)构造函数的名称必须跟类名一样
创建对象的时候会执行构造函数
构造函数式可以重载的
类当中会有一个默认的构造函数,当你写一个新的构造函数后,不管是不是无参数的,那个默认的无参数的构造函数被干掉了
new关键字
new帮我们做了3件事
1)在内存中开辟一块空间
2)在开辟的空间中创建对象
3)调用对象的构造函数进程初始化对象
值类型和引用类型
区别:
1、值类型和引用类型在内存上存储的地方不一样
2、在传递值类型和传递引用类型的时候,传递的方式不一样
值类型称之为值传递,引用类型称之为引用传递
一般的值类型和引用类型:
值类型:int、double、bool、char、decimal、struct、enum
引用类型:string、自定义类、数组
存储:
值类型的值是存储在内存的栈当中
引用类型的值是存储在内存的堆中
字符串
1)字符串的不可变性
当你给一个字符串重新赋值后,老值并没有销毁,而是重新开辟一块空间重新存储新值
当程序结束后,GC扫描整个内存,如果发现有的空间没有指向,则立即把它销毁
2) 我们可以将字符串看作是char类型的一个只读数组
ToCharArray:将字符串转化为数组
new string(char[] chs):将char数组转化为字符串
继承的特性
1.继承的单根性:一个子类只能有一个父类
2.继承的传递性
3.子类没有继承父类的构造函数,但是,子类会默认调用父类的无参的构造函数,创建父类对象,使子类能够使用父类的成员
所以,如果在父类中重新写一个有参数的构造函数后,那个无参数的构造函数被销毁,子类就调用不到了,所以子类会报错
解决办法:
1.在父类中重新写一个无参数的构造函数
2.在子类中显式调用父类的构造函数,使用关键字:base()
转载地址:http://dpxlf.baihongyu.com/