提到面向对象,必定会想到三要素:封装、继承、多态。以下是个人的理解:
封装:对一类事物抽象出共同的属性、方法,封装成类。对外只提供功能实现的接口供用户使用,而用户不必考虑接口内部是如何实现的。
继承:类之间可以有继承的关系。子类可以拥有父类指定的方法和属性,在次基础上子类还可以制定父类没有的方法和属性。
多态:指同一实体同时具有多种形式。将子类对象赋值给它的父类对象后,父对象自动调用子类中重写的方法。
多态的好处:把不同子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,以适应需求的不断变化。
-
属性、字段、方法
属性、字段、方法都可以叫做类的成员。
字段:就是类的状态(就是C++中的属性)。变量开头字母应小写。
属性:我理解为带有get、set方法的字段。变量开头字母应大写。
方法:类内成员函数。
通过public、private等访问控制限制成员在哪些地方可以被调用。应该注意字段不要设置为public。
属性的书写格式:
class Person {
private string name;
public string Name {
set {
this.name = value;
}
get {
return name;
}
}
}
}
可以简化成:
class Person {
public string Name { get; set;}
}
属性成员写操作时候调用set方法,读操作时调用get方法。只写get或set方法,构成只读或只写属性。
-
构造函数
通过构造函数完成类对象的创建。没有声明构造函数的情况下,会自动创建无参构造函数。
1.构造函数名和类名相同,无返回值。
2.构造函数可以没有参数
3.可以有多个构造函数,构成重载
-
析构函数
当对象脱离其作用域时,系统自动执行析构函数。同样没有声明析构函数的情况下,会自动创建析构函数。
1.一个类只能有一个析构函数。
2.析构函数无参数、无返回值。
3.析构函数不能被调用(自动被编译器调用)。
-
异常捕获
try {
}
catch (Exception ex) {
}
throw new Exception(); // 通过throw抛出自定义异常
其实报出异常时的对象是Exception类的子类,使用Exception类对象执行子类方法,这就是多态的应用。
-
static关键字
1.static修饰的类成员和方法不需要实例化对象,直接通过类名.调用。
2.static方法中可以调用其他static成员,但不能调用非static成员。非static方法可以调用static成员。
3.static修饰的类叫做静态类,静态类多用来实现函数库。
-
命名空间 namespace
不同于C++使用域名解析::,C#中调用指定命名空间的方法,通过命名空间.方法名的方式调用。也可以使用 using 命名空间;来打开命名空间。
-
索引器
C#中提供了按照索引器进行访问的方法。索引器相当于属性的一个扩展,通过类对象[索引器参数列表]的方式调用索引的get、set方法。
一个类中可以有多个不同参数列表的索引器构成重载。
class Person {
public string this[int index] {
set {
}
get {
return "";
}
}
}
Person p = new Person();
p[1] = "A"; //索引器写操作调用set方法
Console.WriteLine(p[1]); //索引器读操作调用get方法
仅有get或者set的方法构成只读只写索引器
-The End-
© Jervis