C#继承(1)
继承
父类=基类=超类=base class
子类=sub类=派生类
继承是用来扩展自身的功能。
通过关键字":"来实现继承。
1)继承
(1)继承中的构造函数
默认情况下,子类中的构造函数调用的是父类的空的构造函数。
如果父类中没有空的构造函数,那么子类的构造函数必须显示的调用父类中的某一个构造函数。
(2)base关键:base指得是父类对象。
如果base放在子类构造函数后,则base调用的是父类的构造函数。
如果base在普通方法中,则指的是创建的父类对象,可以调用父类对象中的方法和属性。
(3)方法的重写
由于父类的方法不能够完成某种功能,单还必须调用这个方法,则子类可以重写这个方法,加强其功能。
在父类里面,如果一个函数可以让子类重写,必须在在方法的前面用vritual关键来修饰。说明这个方法可以被子类重写。
如果在子类里面,要重写父类的方法,则应在方法前面加上override关键字,说明这个方法是重写父类的。
**重写方法的要求必须有继承;重写的方法和被重写的方法必须一模一样。
2)多态:一个事物可以同时具有多种较色,但是在某一种特殊的场合只表现出一中。
(1)上转型
把子类对象赋值给父类对象,称之为上转型。
原理:实际上是把子类对象中的父类对象赋值了父类,此时的赋值语句两边的类型是相同的。
此时,这个父类对象能够调用的方法是:自己的方法和已经重写过的方法,如果方法没有被子类重写,那么调用的还是自己的方法。
用途:方便同一标准,根据具体实现不同,而调用不同的方法,从而实现不同的功能和样式。
(2)下转型
把已经上转型的父类对象赋值给子类对象。
原理:就是把已经上转型后的父类对象所对应的原来的子类对象在赋值给子类对象。
此时,这个对象能够调用的方法是自身的方法,继承来得方法和已经重写过得方法。
*下转型需要通过显示的类型转换。
**C#中只支持单继承,一个类只能有一个直接的父类。
3)抽象类
[访问修饰符] abstract class 类名
{
//拥有了普通类出构造函数外的任何东西
//还可以有抽象函数
}
4)sealed关键字
(1)如果sealed修饰的是类,则这个类是无法被继承,不能当父类
(2)如果sealed修饰方法,则子类是无法重写这个方法的。
5)interface:为了解决多继承的问题而诞生的一种特殊的“类”。
(1)接口里面只能写方法的定义和属性的定义。
(2)在接口中的方法定义前面不能含有public
(3)子类在实现接口的方法是,不能使用override关键字。
**如果一个类同时要继承类也要实现结构,那么父类要写在前面,接口在后。
6)protected:修饰的变量和方法只能在本类和子类中去使用,不能通过对象来访问。
7)namespace 命名空间是为了解决重名的问题,方便管理类。
namespace 名字
{
//只能够放,类,接口,枚举,结构体,委托
//不能有方法,变量的。
}
(1)命名空间可以嵌套。
(2)命名空间于物理路径没有关系,只和逻辑上有关系。
8)enum枚举:把有限的元素放在一起。使用字母代替数字标示的含义。枚举是一个值类型。
public enum 枚举名
{
枚举元素,...,枚举元素
}
(1)默认情况下,枚举元素的类型是int类型.并且从0开始,每次递加1。
(2)如果有一个枚举元素有初值,那么后续的元素以此元素为基础递加1。
浙公网安备 33010602011771号