C#继承机制 C#中的继承符合下列规则

1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object 类作为所有类的基类。

2、派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。

3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。

4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。

5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。

6、派生类只能从一个类中继承,可以通过接吕实现多重继承。

下面的代码是一个子类继承父类的例子:
  
using System ;
public class ParentClass
{
public ParentClass( )
{ Console.WriteLine("父类构造函数。"); }
public void print( )
{ Console.WriteLine("I‘m a Parent Class。") ; }
}
public class ChildClass : ParentClass
{
public ChildClass( )
{ Console.WriteLine("子类构造函数。") ; }
public static void Main( ) {
ChildClass child = new ChildClass( ) ;
child.print( ) ;
}
}

程序运行输出:

父类构造函数。子类构造函数。I‘m a Parent Class。

上面的一个类名为ParentClass, main函数中用到的类名为ChildClass。要做的是创建一个使用父类ParentClass现有代码的子类ChildClass。

1.首先必须说明ParentClass是ChildClass的基类。

这是通过在ChildClass类中作出如下说明来完成的:"public class ChildClass : ParentClass"。在派生类标识符后面,用分号":" 来表明后面的标识符是基类。C#仅支持单一继承。因此,你只能指定一个基类。

2.ChildClass的功能几乎等同于ParentClass。

因此,也可以说ChildClass "就是" ParentClass。在ChildClass 的Main( )方法中,调用print( ) 方法的结果,就验证这一点。该子类并没有自己的print( )方法,它使用了ParentClass中的 print( )方法。在输出结果中的第三行可以得到验证。

3.基类在派生类初始化之前自动进行初始化。ParentClass 类的构造函数在ChildClass的构造函数之前执行。

时间: 2024-07-30 22:56:47

C#继承机制 C#中的继承符合下列规则的相关文章

java中的继承与oc中的继承的区别

为什么要使用继承? 继承的好处: (1)抽取出了重复的代码,使代码更加灵活 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强 在OC中的继承是: 1.OC中不允许子类和父类拥有相同名称的成员变量名:(java中是可以的) 2.编译器从上往下执行,所以在子类前面至少应该要有父类的声明:如 @interface Worker : Person @end 3.OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果父类没有定义该方法,则继续在继承链上查找,直到找到为止,

ES5中的继承和ES6中的继承

在JavaScript中,prototype.constructor.__proto__.构造函数.原型.实例这些概念已经很让人头疼,再加上ES6的class .extends已经乱成一锅粥了,平时对这些用的少写的少,是得好好捋清楚.看了几篇文章有了自己的理解,理解如下: 构造函数.prototype = 原型: 构造函数.prototype.constructor = 原型.constructor = 构造函数: new 构造函数 = 实例: 实例.constructor = 构造函数: 实例

JavaScript强化教程——Cocos2d-JS中JavaScript继承

JavaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来的,在Cocos2d-JS的早期版本Cocos2d-HTML中几乎全部的API都是模拟Cocos2d-x API而设计的,Cocos2d-x本身是有C++编写的,其中的很多对象和函数比较复杂,JavaScript语言描述起来有些力不从心了.在开源社区中John Resiq在他的博客(http://e

Cocos2d-JS中JavaScript继承

JavaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来的,在Cocos2d-JS的早期版本Cocos2d-HTML中几乎全部的API都是模拟Cocos2d-x API而设计的,Cocos2d-x本身是有C++编写的,其中的很多对象和函数比较复杂,JavaScript语言描述起来有些力不从心了.在开源社区中John Resiq在他的博客(http://e

面向对象,继承机制

一.面向对象语言的要求 1.封装:把相关的信息(无论数据或者方法)存储在对象中的能力. 2.聚集:把一个对象存储在另一个对象内的能力. 3.继承:由另一个类(或者多个类)得来类的属性和方法的能力. 4.多态:编写能以多种方法运行的函数或者方法的能力. 二.继承机制 1.单个类继承 function ClassA(sColor,sName) { this.sayColor = function () { alert(sColor); }; this.sayColordd = function ()

Java语言中的----继承(一)

day10 Java语言中的继承(一) 一.继承概述: 继承:什么是继承,程序中的继承与生活中的继承还是有区别的,在程序中继承以后,你的父类和你的子类同样的也具有某一成员变量.那么我们为什么药学习继承?是因为我们在编程的时候我们会有大量的代码需要重写,从而导致我们代码比较繁杂而容易错误.所以定义一个类做为父类,将一些共有的属性定义在这个类中,当某一个类需要使用到这些方法的时候就可以直接通过extends关键字就可以直接使用父类中的成员变量.方便快捷.因此,谁继承了父类谁就是这个父类的子类.他们之

【《Objective-C基础教程 》笔记ch04】(五)OC中的继承inheritance机制

一.为什么需要继承 使用继承一方面继承了父类的特性,另一方便解决了重复代码维护问题. 二.继承之语法 1. @interface 子类名:父类名 2. OC只支持单继承,不支持继承多个父类. 3. 重构--移植和优化代码. 三. 继承的工作机制 1. 方法调度 子类拥有一个指向它父类的引用指针,消息传递时,OC的方法调度机制使用该信息来找到正确的实现方法,查找过程是现在子类中找,找不到再到父类中继续找. 2. 实例变量 1)继承实例源码 @interface Shape : NSObject {

JavaScript中继承机制的模仿实现

首先,我们用一个经典例子来简单阐述一下ECMAScript中的继承机制. 在几何学上,实质上几何形状只有两种,即椭圆形(是圆形的)和多边形(具有一定数量的边).圆是椭圆的一种,它只有一个焦点.三角形.矩形和五边形都是多边形的一种,具有不同数量的边.正方形是矩形的一种,所有的边等长.这就构成了一种完美的继承关系. 在这个例子中,形状(Shape)是椭圆形(Ellipse)和多边形(Polygon)的基类(base class)(所有类都由它继承而来).椭圆具有一个属性 foci,说明椭圆具有的焦点

lua中基类和“继承机制”

基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lua基类和C++基类极为相似,但是lua中却没有继承这一说,更没有所谓的派生类.lua只能通过一种行为(元表)来模拟C++继承这一方法. 元表:lua中提供的元表是用于帮助lua数据变量完成某些非预定义功能的个性化行为,当它做某一种操作,然而self表中却没有定义实现这种操作的方法,那么为了实现这一操