科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件深入剖析C#继承机制

深入剖析C#继承机制

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力

作者:天雨 来源:yesky 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
3、继承中对使用可访问性级别的限制

  声明类型时,最重要的是查看该类型是否必须"至少"与其他成员或类型"具有同样的可访问性"。例如,直接基类必须至少与派生类具有同样的可访问性。以下声明将导致编译器错误,因为基类 BaseClass 的可访问性小于 MyClass:

class BaseClass {...}
public class MyClass: BaseClass {...} // Error

  下表汇总了对使用声明的可访问性级别的限制。

上下文 备注
类类型的直接基类必须至少与类类型本身具有同样的可访问性。
接口 接口类型的显式基接口必须至少与接口类型本身具有同样的可访问性。
委托 委托类型的返回类型和参数类型必须至少与委托类型本身具有同样的可访问性。
常数 常数的类型必须至少与常数本身具有同样的可访问性。
字段 字段的类型必须与至少字段本身具有同样的可访问性。
方法 方法的返回类型和参数类型必须至少与方法本身具有同样的可访问性。
属性 属性的类型必须至少与属性本身具有同样的可访问性。
事件 事件的类型必须至少与事件本身具有同样的可访问性。
索引器 索引器的类型和参数类型必须至少与索引器本身具有同样的可访问性。
运算符 运算符的返回类型和参数类型必须至少与运算符本身具有同样的可访问性。
构造函数 构造函数的参数类型必须至少与构造函数本身具有同样的可访问性。

  示例:以下示例包含不同类型的错误声明。每个声明后的注释指示了预期的编译器错误。

using System ;
delegate int MyDelegate( ) ;
class B
{ // 定义一个私有的函数:
static int MyPrivateMethod()
{ return 0 ; }
}
public class A
{ // 字段定义:
public B myField = new B();// 错误: 类型B与A字段A.myField级别不同
// 构造函数:
public readonly B myConst = new B(); //错误: 类型B是仅读的
//方法:
public B MyMethod()
{
return new B();
}
//属性:
public B MyProp
{
set { }
}
public static B operator + (A m1, B m2)
{
return new B();
}
static void Main()
{
Console.Write("Compiled successfully");
}
}

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章