现在的位置: 首页 > 综合 > 正文

chapter 4 继承

2013年10月14日 ⁄ 综合 ⁄ 共 806字 ⁄ 字号 评论关闭

关注与C++的不同:

1、C#不支持多重继承,但允许多重接口继承;c#不支持私有继承,因此继承时 ,在基类名上没有public和private限定符。C#中虚函数的概念与标准的OOP的概念相同。

2、override关键字:在派生类的函数重写基类的函数时,应该用override显示声明(不使用override关键字,也不会出错);使用该override时,要求函数签名必须相同,这样可以防止编译错误);override修饰符通常用在:当派生类需要重写基类的虚拟函数时。

3、隐藏:如果签名相同的方法在基类和派生类中都进行了声明,但给方法没有声明声明为virtual和override时,派生类方法就会隐藏基类方法。隐藏一个方法时,应该用new关键字声明(不使用new关键字,也不会出错),这样也防止了编译错误。

C++中隐藏:基类和派生类中,只要函数名相同,就发生隐藏,隐藏导致不能通过派生类对象访问基类中被隐藏的方法。

4、base指针:在一个类中使用base指针,base指向该类的直接基类。

5、abstract关键字:如果类里某个方法被abstract修饰,则该方法是抽象的,包含抽象方法的类称为抽象类;抽象方法本身是虚拟的,不能直接实现,需要在派生类中重写;抽象类不能实例化。

6、sealed关键字:sealed修饰类时,表示该类不能被继承;修饰方法时,表示该方法不能被重写;

C++中,定义一个不允许被继承的类,需要通过把基类的构造函数设置为private;

7、派生类的构造函数:C#中的构造函数没有类似于C++中的构造函数初始化列表;base和this关键字是一个构造函数调用另一个构造函数时允许使用的关键字;

8、internal:internal修饰的类型或成员只能在包含它的程序集中访问;

9、接口:接口不允许为它的任何成员直接提供实现,需要在派生于接口的类中实现;接口只能包含方法、熟悉、索引器和事件的声明;

抱歉!评论已关闭.