所谓类::类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类是抽象的概念,仅仅是模板,比如说:“人”类

对象是一个你能够看得到、摸得着的具体实体

类不占内存  对象才占内存

类是对象的类型。   

对象叫做类的实例

成员:字段,属性,方法

实例化类

通过类产生实例的过程,叫做类的实例化

类 实例名=new 类()

只要是没有加static的方法或属性,都必须先实例化,再通过实例名.方法名或实例名.属性名来访问

加static的方法或属性,直接类名.方法名或类名.属性名来访问

类是不占内存的,但是对象是占内存的

访问修饰符:

public  :可以在任何地方被访问

Internal:只能在本项目中被访问

Private:只能在本类中被访问

Preotected:只能在本类和子类中被访问

在类级别上,默认Internal

在一个类中定义变量和方法时,如果不写访问修饰符,那么默认是private。

属性与字段

定义一个public,这个变量含有get  set方法的 变量,用来保护一个私有变量的叫做属性

读写属性:具有get  set方法的

只读属性:只有get方法的,这个属性只能读取 不能赋值              

只写属性:只有set方法的,这个属性只能写 不能读(用的很少)

属性是不存值的,只是一个中间商。

字段前什么也不写,默认就是private

当我们实例化一个类时,系统会自动对这个类的属性值进行初始化,

数字类型初始化为0/0.0

string类型初始化为null  空

Char类型初始化为\0

属性是为了保护与之相对应的字段的.保证对字段的读取和赋值符合要求.

构造函数

使用构造函数的好处:

构造函数最主要的最用:对象初始化

1)对多个函数进行赋值时,不需要重复的写实例名

2)可以保护用户在new一个对象时必须对某一个属性进行赋值

3)在创建对象时,对只读属性进行初始化

要实例化一个类,必须调用它的构造方法

当我们定义一个类时,如果我们没有写构造方法,系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做,我们也看不到

我们可以定义一个构造方法,构造方法是一个特殊的方法,他的名字和类的名字相同,没有返回值,void可以省略不写,我们一旦写一个构造方法后,系统原来为我们添加的构造方法就不会添加了

构造方法的重载

 1 namespace _05构造方法重载
 2 {
 3     class Student
 4     {
 5         private string name;
 6 
 7         public string Name
 8         {
 9             get { return name; }
10             set { name = value; }
11         }
12         private int age;
13 
14         public int Age
15         {
16             get { return age; }
17             set 
18             {
19                 age = value;
20             }
21         }
22         private char sex;
23 
24         public char Sex
25         {
26             get { return sex; }
27             set 
28             {
29                 if (age == '' && age == '')
30                 {
31                     sex = value;
32                 }
33                 else
34                 {
35                     age = '';
36                 }
37             }
38         }
39         private int chinese;
40 
41         public int Chinese
42         {
43             get { return chinese; }
44             set { chinese = value; }
45         }
46         private int math;
47 
48         public int Math
49         {
50             get { return math; }
51             set { math = value; }
52         }
53         private int english;
54 
55         public int English
56         {
57             get { return english; }
58             set { english = value; }
59         }
60         public void SayHello()
61         {
62             Console.WriteLine("我叫{0},今年{1}岁,性别{2},语文{3},数学{4},英语{5}",name,age,sex,chinese,math,english);
63         }
64         public Student(string name, int age, char sex, int chinese, int math, int english)
65         {
66             this.name = name;
67             this.age = age;
68             this.sex = sex;
69             this.chinese = chinese;
70             this.math = math;
71             this.english = english;
72         }
73         public Student(string name,char sex)
74         {
75             this.name = name;
76             this.age = 18;
77             this.sex = sex;
78         }
构造方法的重载

抛异常:

要想抛一个异常,可以这样写

Throw new Exception(“错误信息”);