C# 继承

简介: 在继承一个基类时,成员(属性、方法)的可访问性就成了一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。 只有派生类才能访问基类的protected成员。对于外部代码来说,这个可访问性与私有成员一样:外部代码不能访问private成员和protected成员。 基类的成员可以是虚拟(Virtual)的,也就是说,成员可以由继承它的类重写。派生类可以提供成员的其他实现

在继承一个基类时,成员(属性、方法)的可访问性就成了一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。

只有派生类才能访问基类的protected成员。对于外部代码来说,这个可访问性与私有成员一样:外部代码不能访问private成员和protected成员。

基类的成员可以是虚拟(Virtual)的,也就是说,成员可以由继承它的类重写。派生类可以提供成员的其他实现代码。这种实现代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问它们。如果没有提供其他实现方式,通过派生类使用成员的外部代码就自动访问基类中成员的实现代码。

虚拟成员不能是私有成员,因为这样会自相矛盾--不能说成员可以由派生类重写,同时派生类又不能访问它。

基类还可以定义为抽象类。抽象类不能直接实例化。要使用抽象类,必须继承这个类,抽象类可以有抽象成员,这些成员在基类中没有实现代码,这些实现代码必须在派生类中提供。

当然,抽象基类可以提供成员的实现代码,这是很常见的。不能实例化抽象类,并不意味着不能在抽象类中封装功能。

最后,类可以是密封(seal)的。密封的类不能用作基类,所以没有派生类。

小注:

       重写(Override):指在继承关系中,在派生类中重写由基类继承来的方法,这时基类和派生类中就有两个同名的方法,系统会根据对象的实际类型调用相应版本的方法。

 

目录
相关文章
|
5月前
|
安全 程序员 编译器
C++之继承
C++之继承
|
5月前
|
安全 编译器 程序员
【C++】—— 继承
【C++】—— 继承
|
5月前
|
安全 Java 编译器
C++:继承
C++:继承
47 0
|
4月前
|
程序员 编译器 C++
【c++】继承
【c++】继承
20 0
|
编译器 程序员 C++
继承【C++】
c++中的继承,多继承,虚拟继承
30 1
|
5月前
|
C++
C++之继承<2>【详解】
C++之继承<2>【详解】
|
5月前
|
安全 程序员 C++
C++之继承<1>【详解】
C++之继承<1>【详解】
|
11月前
|
安全 Java 编译器
C++中的继承(超详细)
C++中的继承(超详细)
55 0
|
12月前
|
Java C++