通过担任我们可以界说一个新类,新类纳入一个已经声明的类并进行扩展。
1.可以使用- 一个已经存在的类作为新类的根本。.已存在的类称为基类(baseclass),新类称为派生类(derivedclass)。派生类成员的构成如下:
(1)本身声明中的成员。
(2)基类的成员.
2.要声明一个派生类,需要在类名后插手基类规格说明。基类规格说明由冒号和后面随着用作基类的类的名称构成。派生类被描述为直接担任自列出的基类。“
3.派生类被描述为扩展它的基类,因为它包罗了基类的成员,加上在它本身的声明中的任何附加成果。
4. 派生类不能删除它所担任的任何成员。
2.所有类都派生自Object类
除了特殊的类object,所有的类都是派生类,即使它们没有基类规格说明。类object是独一的非派生类,因为它是担任条理布局的根本。
没有基类规格说明的类隐式地直接派生自类object.不加基类规格说明只是指定object为基类的简写。这两种形式是语义等价的。
关于类担任的其他重要内容如下:
1.一个类声明的基类规格说明中只能有- 一个单独的类。这称为单担任。
2.虽然类只能直接担任- 一个基类,但担任的条理没有限制。也就是说,作为基类的类可以派生自此外- 一个类,而它又派生自此外一个类,直下去,直至最终达到object.
3.隐藏基类的成员
虽然派生类不能删除它担任的任何成员,但它可以隐藏它们。
1.要隐藏- 一个担任的数据成员,需要声明- 一个新的不异类型的成员,并使用不异的名称。
2.通过在派生类中声明新的带有不异签名的函数成员,可以隐藏或掩盖担任的函数成员。请记住,签名由名称和参数列表构成,但不包孕返回类型。
3.要让编译器知道你在故意隐藏担任的成员,使用new修饰符。没有它,措施可以告成编译,但编译器会警告你隐藏了一个担任的成员。
4.也可以隐藏静态成员。
4.基类访谒
5.虚要领和笼罩写法
在上- 一节看到,当使用基类引用访谒派生类东西时,得到的是基类的成员。虚要领可以使基类的引用访谒“升至”派生类内。
可以使用基类引用挪用派生类(derivedclass) 的要领,只需满足下面的条件:
1.派生类的要领和基类的要领有不异的签名和返区类型。
2.基类的要领使用virtua1标注。
3.派生类的要领使用override标注。
其他关于virtual和override修饰符的重要信息如下:
1.覆写和被覆写的要领必需有不异的可访谒性。换一种说法,被覆写的要领不能是private等,而覆写要领是public。
2.不能覆写static 要领或非虚要领。口要领、属性和索引(在前-章论述),以及称为事件(将在后面论述) 的另一种成员类型,它们都可以被声明为virtua1和override.
6.覆写符号为overridede要领
覆写要领可以在担任的任何条理呈现。
1.当使用东西基类部分的引用挪用- 一个覆写的要领时,要领的挪用被沿派生条理上溯执行,直到符号为override的要领的最派生(most-derived) 版本。
2.如果在更高的派生级别有该访法的其他声明,但没有被符号为override,那么它们不会被挪用。
7.结构函数的执行
1.要创建东西的基类部分,基类的- 一个结构函数被作为创建实例过程的- 一部分被挪用。
2.担任条理链中的每个类在执行它本身的结构函数体之前执行它的基类的结构函数。
例如,下面的代码展示了类MyDerivedClass和它的结构函数的声明。当该结构丽数被挪用时,它在执行本身的要领体之前挪用无参数的结构函数MyBaseClass( )。
8.结构函数初始化语句
默认情况下,在东西被结构时,基类的无参数结构函数被挪用。但结构函数可以被重载,所以基类可能有- 一个以上的结构函数。如果但愿派生类使用- 一个指定的基类结构函数而不是无参数结构函数,必需在结构函数初始化语句中指定它。
有两种形式的结构函数初始化语句:
1.第- 一种形式使用关键字base并指明使用哪- 一个基类结构函数。
2.第二种形式使用关键字this 并指明应该使用当前类的哪- 一个此外的结构函数。