类
所谓类::类是模子,确定对象将会拥有的特征(属性)和行为(方法)
类是抽象的概念,仅仅是模板,比如说:“人”类
对象是一个你能够看得到、摸得着的具体实体
类不占内存 对象才占内存
类是对象的类型。
对象叫做类的实例
成员:字段,属性,方法
实例化类
通过类产生实例的过程,叫做类的实例化
类 实例名=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(“错误信息”);