今天主要学习了下面向对象的一些知识,小结如下:
1:类是抽象的,是一个具有同性的事物的集合,对象是具体的,是类的实例,其实类是把某些共性的成员数据封装在一起,形成一个整体,他是不占用内存空间的
但对象是具体的,会占用内存空间的,因此在创建对象时,要分配好内存,类有字段(类的状态)、属性、方法等成员变量;
2:属性其实就是字段的一种封装,属性首字母大写,字段首字母小写;属性是通过两个访问器get和set来对字段进行读写的;
3:一般字段是private,最好都是private的,这样更好地能保证程序的封装性,方法是一般是public或protected,属性是public的,
但是private的成员只能被本类自己所调用,要调用此类型的字段就必须通过方法或属性;
如果每次访问字段时都要创建方法的话,那么字段多的话,岂不是很麻烦,但是麻烦归麻烦,如果不写方法,用public的话会更麻烦,因为其他的类
也能对其字段进行访问,这就破坏了封装性,破坏了原有的整体结构,而且赋值的这种方式很费力,但是可喜的是C#提供了一种属性的方法,可以通过属性
来设置字段的读写权限;
4:ref参数在传递之前必须先赋值,out在传入参数之后传出之前必须要赋值,这是ref与out的本质区别,两者都可以用来返回多个值,而return只能返回一个
out一般用于多个返回值的场所;
5:异常try{}catch(){}尝试执行try后的语句,但当try语句中有出现异常的就停止执行后面的语句,catch()捕获try语句中的异常错误,有就执行catch语句块;
ex.Message异常错误信息,ex.StackTrace异常堆栈信息,发生异常的具体位置;
6:命名空间是用来解决类重名的,是用来组织和管理类的,同一个命名空间下不允许有两个相同的类;
要从一个命名空间去访问另一个命名空间中的类的成员,就必须先引入另一个命名空间名,当然也可以通过确定的命名空间名.类名来创建对象,只不过
前一种方法可以做到一劳永逸的效果,当两个命名空间中含有同一个类名时,在一个命名空间中引用另一个命名空间的类时,要注意区分不同命名空间的类
这是using指令所不能帮我们做到的,因为此时编译器无法判别到底是那个命名空间的类;
7:静态的成员是从定义时,就一直占用内存空间的,能直接通过类名.成员名的方法来调用,并且只能通过这种方法,不能通过对象实例来调用;不能在同一个类中定义本类的对象,除带Main()方法的类外,因为其他的类如果定义了构造函数则会陷入死循环,而创建对象的过程就是调用构造函数的过程,因此也会陷入死循环,所以不能创建;
8:构造函数在创建对象时,由系统自动调用,可以是用户自己写的,也可以是系统的,.NET会帮我们自动生成,自动调用,构造函数可以重载(实现多态)
9:继承其实就是为了帮助我们更好地开发程序,节省代码工作量的,一个基类(ParentClass父类)可以把所有其派生类(ChildClass子类)的共有属性包含在一起
特别的,当哪天我们发现所有子类都具有另外一个特性时,我们可以很快速,很简单的在父类里添加相应的字段即可,因为所有子类都继承了它
值得注意的是:基类的引用可以引用派生类的引用,但派生类的引用却不能引用基类的引用,原因就是:当派生类引用基类时,派生类的其他特有的成员就无法引用
无形中减少了其所指的空间,而基类指向派生类的引用时,却不会,基类中每一个都能照样引用,还可以引用派生类的成员;
10:索引器类似数组,在我们创建好之后通过对象名[]的方式来访问类的字段,索引器可以索引任何类型的数据,大大简化了数组、集合等数据的冗余问题
属性是对一个字段的封装,而索引则是对多个字段的封装;
Winform:Windows Form 的简称
1:控件其实就是对象,执行控件的属性其实就是执行对象的方法,如:TextBox控件的调用方法TextBoxName.属性
2:窗体其实就是我们平常在Windows系统下所见到的窗口,一般窗体程序由窗体设计Form.Designer.cs、后台代码Form.cs、窗体资源Form.resx
窗体程序由窗体、事件、控件等构成;
明天继续学习Winform,以及T-——SQL 语句。加油!
我坚信:山再高,只要坚持不懈,一步一步地往上爬,终有一天会爬到山顶,书再难,只要持之以恒,一页一页地往下看,总有一天会全面看懂,编程再苦,只要永不言弃,一行一行代码地敲打,终有一天会学有所成。 ————————————我不自弃,谁能弃我!