C#第四讲
一、类
1、父类,也叫基类、超类
2、子类,也叫派生类
二、继承
公共信息写在一个单独类里面来做成父类,让其他子类继承。
1、继承的主要特点
A、ClassA:ClassB //ClassA叫子类(派生类),ClassB叫基类(父类,超类),ClassB里面的所有成员都会被ClassA调用
(当然要受到修饰符的约束:私有成员也会被继承,只是没有访问权限)。
B、ClassA:ClassB且ClassB:ClassC //ClassB类继承了ClassC类,ClassA类继承了ClassB类,所以ClassA也就继承了ClassC
C、任何类型的基类是Object类。
D、在类前面加【sealed】修饰,则该类变成【密封类】,密封类是不允许继承的。
E、任何一个类都具有默认的构造方法,如果人为添加构造方法就按人为添加的构造方法创建对象。
程序执行时先执行子类的构造方法,再执行父类的够着方法,所有继承类的构造方法执行完再执行指定方法。
F、父类、子类中具有相同名称的方法就调用子类的同名方法,这种情况下系统提示子类的同名方法前加【new】修饰来区分。
G、一个父类的方法允许子类修改的话需要在父类的方法前加【virtual】修饰,子类的同名方法前要加【overried】修饰。
父类中的方法为虚方法(有virtual修饰的)时,之类的同名方法才可以重写,重写的方法要用overried来修饰。此时只有重写的方法被执行。
H、父类的对象可以用子类来创建,但反过来不能把子类对象用父类来创建。
I、父类、子类中具有相同方法时没有重写的话,以就近原则启用(里氏替换原则)最近同名方法。如果是方法被子类重写过,则会调用重写过的方法。
三、多态
同一种方法具有多种实现形式,重写和重载都属于多态的情形。
1、重载是指同名方法中方法的数据类型不同、参数个数不同、参数数据类型不同的方法之间互相被替代使用的情形。
** 每种方法的上一行输入三个斜杠【///】时系统会自动写出提示的格式,在这格式中只需填写必要的说明就可以在调用处看到这些提示。
2、静态方法不能被重写,但可以隐藏。静态类里面只能有静态成员。
四、字段和属性
字段是只能用固定的赋值方式改变其值或读取其值。
属性可以灵活控制读和写,属性会带有get和set方法。
如:private string name; //name字段为私有变量,只为属性而存在。
public string Name //Name才是外部调用的属性名称
{
get { return name; } //可灵活设置读取方式
set { name = value; } //可灵活设置写入方式
}
五、抽象类
在类或方法前加【abstract】就可以定义抽象类或抽象方法,一个类里面只要有一个抽象方法就认为这个类就是抽象类。
一个类继承抽象类时必须完成抽象类中的所有抽象方法。
六、接口
更加严格的抽象类,接口中只能有抽象方法。
接口中的每个抽象方法前系统默认了【public static】的修饰,所以无需填写任何修饰,直接写方法名称就可以。
如:interface Interface1
{
void A();
void B();
}
和抽象雷一样,一个类继承接口时必须完成接口中的所有抽象方法。
** 类是单继承、接口是多继承。