C#面像对象编程学习笔记(一)

    技术2022-05-11  94

    C#高级编程(第4版)

    http://book.csdn.net/bookfiles/140/

     4.1继承的类型4.1.1实现继承和接口继承实现继承表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。接口继承表示一个类型只继承了函数的签名,没有继承任何实现代码。4.1.2多重继承C#不支持多重实现继承。而C#又允许类型派生于多个接口。这说明,C#类可以派生于另一个类和任意多个接口。因为System.Object是一个公共的基类,所以每个C#类(除了Object类之外)都有一个基类,还可以有任意多个基接口。4.1.3  结构和类结构总是派生于System.ValueType,它们还可以派生于任意多个接口。类总是派生于用户选择的另一个类,它们还可以派生于任意多个接口。

    注意C#不支持私有继承,如果在类定义中没有指定基类,C#编译器就假定System.Object是基类。class MyClass   //derives from System.Object{}4.2  实现继承注意C#不支持私有继承4.2.1  虚方法把一个基类函数声明为virtual,该函数就可以在任何派生类中重写了C#要求在派生类的函数重写另一个函数时,要使用override关键字显式声明4.2.2  隐藏方法如果函数定义相同的方法在基类和派生类中都进行了声明,但该方法没有声明为virtual 和 override,派生类方法就会隐藏基类方法。4.2.3  调用函数的基类版本C#有一种特殊的语法用于从派生类中调用方法的基类版本:base.<MethodName>()。4.2.4  抽象类和抽象函数如果类包含抽象函数,该类将也是抽象的,也必须声明为抽象的。C#允许把类和函数声明为abstract,抽象类不能实例化,而抽象函数没有执行代码,必须在非抽象的派生类中重写。4.2.5  密封类和密封方法C#允许把类和方法声明为sealed。对于类来说,这表示不能继承该类;对于方法来说,这表示不能重写该方法。4.2.6  派生类的构造函数构造函数的调用顺序是先调用System.Object,再按照层次结构由上向下进行,直到到达编译器要实例化的类为止。

    向基类构造函数传递参数:public class class1{ public class1(string msg) {  MessageBox.Show(msg); }}public class class2:class1{ public class2(string name):base(name) {  MessageBox.Show("def"); }}class2 c1 = new class2("abc");

    4.3  修饰符

    public 所有的类型或成员 任何代码均可以访问该方法 protected 类型和内嵌类型的所有成员 只有派生的类型能访问该方法 internal 类型和内嵌类型的所有成员 只能在包含它的程序集中访问该方法 private 所有的类型或成员 只能在它所属的类型中访问该方法 protected internal 类型和内嵌类型的所有成员 只能在包含它的程序集和派生类型的代码中访问该方法


    最新回复(0)