黑马程序员__类, 构造方法
类是对象的类型
跟 int a同理。
定义类的语法:
[访问修饰符] class 类名
{
成员;
.....
}
定义一个叫Person的类,这个类仅仅是人这个对象的模板,在这个模板中规定人类对象都应该有姓名、性别、年龄的属性和叫SayHello的方法。
代码如下:
class Person { public string name; public char sex; public int age; public void SayHello() { Console.WriteLine("我是{0},我是{1}生,我今年{2}岁啦", name, sex, age); } }
通过一个类产生一个对象叫做类的实例化:
语法:类名 实例名 = new 类名()
访问类的属性:实例名.属性名
访问类的方法:实例名.方法名()
只要是没有加static的方法或属性,都必须先实例化,再通过实例名.方法名或实例名.属性名来访问。
加static的方法或属性,可以直接通过类名.方法名或类名.属性名来访问。
访问修饰符:
public:可以再任意地方被访问
intemal:只能在本项目中被访问
private:只能在本类中被访问
preotected:只能在本类和子类中被访问
在一个类中定义变量或方法时,没有写访问修饰符,那么默认的访问修饰符为intemal。(花掉的是目前还不涉及)
什么叫属性:就是定义一个public的具有get/set方法的变量。这个变量时用于保护一个私有变量。
允许外部访问的变量一定要声明成属性
读写属性:
具有get/set方法的属性叫做读写属性。
只有get方法的属性称为只读属性。这个属性只能读取不能写入。
只有set方法的属性称为只写属性。这个属性只能写如不能读取。
当实例化一个类时,系统会自动对这个类的属性进行初始化:
数字类型初始化为0/0.0
string类型初始化成null
char类型初始化成\0
使用构造方法的好处:
1,对多个属性进行赋值时,不需要重复的写实例名。
2,可以保证用户在new一个对象时候必须对某一个属性进行赋值。
3,和第2类似,在创建对象时,对只读属性进行初始化。
当我们定义好一个类之后,如果我们没有写构造方法,吸系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做,我们也看不到。
我们可以定义一个构造方法:
构造方法是一个特殊的方法,他的名字和类的名字相同,并且没有返回值,连void都可以省略不写。我们一旦手写一个构造方法后,系统原先默认给我们添加的那个无参的构造方法就不会再为我们添加了
要想抛异常,这样写:
throw new Exception("错误信息");
命名空间:
用于解决类的重名问题,相当于“类的文件夹”。
不在同一个命名空间下的类,不能被直接访问。要想访问,有两种方法:
1,通过using引用命名空间
2,写全称。命名空间名.类名