1、面向过程<-->面向对象编程
面向过程:朝向的是进行这一件事情的全过程,注重的是进行这一件事情的姿势。

面向对象编程:找个女朋友帮你做事情。借以写成一个通用性的编码,屏蔽掉差别。

每一个人都是有名字,性別,个子,休重,年纪. 这种能够看作是目标的特性
目标务必是看得清莫的见的

大家把这种具备同样特性和同样方式的目标开展进一步的封裝,抽象性出去 类这一定义。
类便是个模板,明确了目标应当具备的特性和方式。
目标是依据类建立出去的。

2、类
英语的语法:
[public] class 类名
{
字段名;(储存数据信息,储存好几个值)
特性;
方式;
}
写好啦一个类以后,大家必须建立这一类的目标,
建立这一类的目标全过程就叫类的实例化。
应用关键词 new.

this:表明当今这一类的目标。
类不是占运行内存的,而目标是占运行内存的。

以前仅有类,沒有目标,在我们实例化目标,给它取值以后(目标),目标就出現了。之后实际操作就对于这一目标去实际操作。这就是面向对象编程的实际操作。

自定类,并不是系统软件出示的,自身写的。
字段名默认设置状况下有初始值。字段名占运行内存。

3、特性
特性的功效便是维护字段名、对字段名的取值和赋值开展限制。
特性的实质便是2个方式,一个叫get()一个叫set()。
√ get()  √ set() 可写应写特性。
√ get()  × set() 写保护特性
× get()  √ set() 只写特性

Fields 字段名
Methods 方式
Property 特性

set便是把传进去的值根据特性取值给字段名。

一个给取值的情况下启用,一个给赋值的情况下启用
用特性里的2个方式来对字段名开展限制。
如果你给特性取值的情况下,最先会实行set方式。
如果你輸出特性的非常值得情况下,会实行get方式。

全过程中特性是沒有存值的,仅仅一个衔接,再解决。

****字段名便是女性,特性才是男性。
结了婚的女人勤俭持家,全部跟外部相处的事儿全是男生做。

4、目标
在我们建立好一个类的目标后,必须给这一目标的每一个特性去取值。
大家管这一全过程称作目标的复位。

在set里边分辨value的值,在get里边分辨字段名的值。

set 把取值给特性的值再取值给字段名, get 把字段名的值回到(回到以前能够做一个限制)

方式中輸出字段名不輸出特性得话,get分辨就用不到,没法限制了。

5、静态数据和非静态数据的差别
1)、在非静态类中,既能够有案例组员,还可以有静态数据组员。(非静态数据字段名,特性,方式和静态数据字段名,特性,方式)
2)、在启用案例组员的情况下,必须应用目标名.案例组员;
在启用静态数据组员的情况下,必须应用类名.静态数据组员名;
get{ return person._name;}
set{person._name=value;}

汇总:静态数据组员务必应用类名去启用,而案例组员应用目标名启用。
静态函数中,只有浏览静态数据组员,不允许浏览案例组员。
案例涵数中,既能够应用静态数据组员,还可以应用案例组员。
静态类中只容许有静态数据组员,不允许出現案例组员。

问:为何静态类不许创建对象?
答:因为它启用得用类名去启用,创建对象不起作用,用不上,英语的语法上沒有。

应用:
1)、假如你要你的类作为一个"工具类"去应用,这个时候能够考虑到将类写出静态数据的。常常应用的,如console
2)、静态类在全部新项目中共享资源。
仅有在程序流程所有完毕以后,静态类才会释放出来資源。

console也是静态类
静态类不允许被实例化

问:为何常常应用就需要写出静态类?
答:由于不用创建对象,只必须类名.方式名。便捷

静态类必须储存数据信息,占运行内存的。
运行内存的储存地区分成3类别
堆 栈 静态数据储存地区

从QQ程序流程进到,QQ登陆一次,应用新浪微博,手机游戏,歌曲,室内空间都不用再登录
应用软件好几个控制模块。要把登录名和登陆密码存有静态类中。

静态类何时释放出来資源?程序流程完毕的情况下释放出来資源。静态类在实行的时候会一直耗费資源,因此 不能用过多

释放出来資源。GC Garbage Collection垃圾分类回收器


6、构造方法
功效:协助大家复位目标(给目标的每一个特性先后的取值)
构造方法是一个独特的方式:
1)、构造方法沒有返回值,连void也不可以写。
2)、构造方法的名字务必跟类名一样。

轻载 一样的名不一样的主要参数

public student();

创建对象的情况下会实行构造方法
构造方法是能够有轻载的。
***
类之中会有一个默认设置的无主要参数的构造方法,如果你写一个新的构造方法以后,无论是有主要参数的還是
无主要参数的,哪个默认设置的无主要参数的构造方法都被灭掉了。


7、new关键词
Person zsPerson=new Person();
new协助大家干了3件事情:
1)、在运行内存中开拓一块室内空间
2)、在开拓的室内空间中创建对象
3)、启用目标的构造方法开展复位目标

8、this关键词
1)、意味着当今类的目标
2)、在类之中显示信息的启用该类的构造方法 :this()

public Student(string name,char gender,int age,int chinese,int math,int english )
{
this.Name = name;
this.Gender = gender;
this.Age = age;
this.Chinese = chinese;
this.Math = math;
this.English = english;
}

public Student(string name,char gender,int age):this(name,gender,age,0,0,0) 沒有的就用0来替代
{
this.Name = name;
this.Gender = gender;
this.Age = age;
}

 

无需写沉余编码

9、析构函数
当程序流程完毕的情况下,析构函数才实行
协助大家释放出来資源
.net引入了 GC Garbage collection 一般不手动式启用全是全自动启用。
有可能程序流程完毕的情况下,GC沒有立刻帮大家释放出来資源
假如資源沒有被立刻释放出来得话,此刻就应用析构函数(假如期待立刻释放出来資源)

放类里边
~Student()
{
console.writeline("我是析构函数");
}

10、汇总
面向对象编程:定义
类 英语的语法
组员:字段名,特性,方式,构造方法
目标
new
this
静态数据和非静态数据的差别:启用上的差别