继承的目的:经常需要扩展现有类型来添加功能。
定义派生类要在类标识符后添加冒号,接着添加基类名称
public class PadItem { public string Name { get; set; } public DateTime LastUpdated { get; set; } } public class Contact : PadItem { public string Address { get; set; } public string Phone { get; set; } }
Contact中没有定义Name属性,但Contact所有实例都可以访问来自PadItem的Name属性,且从Contact派生的所有类都会继承PadItem(或PadItem的父类)。该继承链无限制,每个派生类都拥有由其所有基类公开的所有成员。
1、基类型和派生类型之间的转换
可以将派生类型的值赋给基类型的变量,反之则不成立。所以从基类转换为派生类需要显式转换。
PadItem p = new Contact();
2、private修饰符
派生类继承除构造函数和析构器外的所有基类,但继承不一定意味着可以访问。根据封装原则,派生类不能访问基类的private成员
3、protected修饰符
用protected修饰的成员只可以在派生类中访问。另外,要从派生类中访问受保护成员,必须能在编译时确定它是派生类(或其某子类)中的实例
4、单继承
C#是单继承语言,即一个类不能从两个类中派生。
5、密封类
用sealed修饰类禁止其派生