zoukankan      html  css  js  c++  java
  • C#成员的继承

    命名空间和类型具有“成员”。通常可以通过限定名来访问实体的成员。限定名以对实体的引用开头,后跟一个“.”标记,再接成员的名称。

    类型的成员或者是在该类型中声明的,或者是从该类型的基类“继承”的。当类型从基类继承时,基类的所有成员(实例构造函数、析构函数和静态构造函数除外)都成为派生类型的成员。基类中关于成员的可访问性的声明不能控制该成员是否可继承:继承性适用于任何成员,只要它们不是实例构造函数、静态构造函数或析构函数。然而,在派生类中可能不能访问已被继承的成员,原因或者是因为其已声明可访问性,或者是因为它已被类型本身中的声明所隐藏。

    派生类继承基类的所有成员(除构造函数和析构函数),new用来隐藏基类成员,override用来重写基类成员方法。然而隐藏和重写都不能改变一个事实:

    基类的所有成员(实例构造函数、析构函数和静态构造函数除外)在派生类中一个也不能少。

    例如:

    Fruit

    Private string name

    Protected string color

    Internal int amount

    Public int price

    Private void Fn01()

    (虚拟成员或抽象成员不能是私有的,所以不能用virtual关键字)

    Protected (virtual) void Fn02()

    Internal (virtual) void Fn03()

    Public (virtual) void Fn04()

    ================================

    Apple : Fruit

    Private string name

    派生类中不可见,可以声明一个同名字段(不用new关键字),两个字段各不相干。

    Protected string color

    派生类中可见,声明一个同名字段将隐藏它(最好用new)。如果不声明同名字段,那么this.color和base.color指的是同一个值。

    Internal int amount               

    派生类中可见,声明一个同名字段将隐藏它(最好用new)。如果不声明同名字段,那么this.amount和base.amount指的是同一个值。

    Public int price

    派生类中可见,声明一个同名字段将隐藏它(最好用new)。如果不声明同名字段,那么this.price和base.price指的是同一个值。

    Private void Fn01()

    虚拟成员或抽象成员不能是私

    有的,所以不能用virtual关键字

    派生类中不可见,可以声明一个同名方法(不用new关键字),两个方法各不相干。

    Protected (virtual) void Fn02()

    派生类中可见,new一个同名方法将隐藏它,override将重写它

    Internal (virtual) void Fn03()

    派生类中可见,new一个同名方法将隐藏它,override将重写它

    Public (virtual) void Fn04()

    派生类中可见,new一个同名方法将隐藏它,override将重写它

  • 相关阅读:
    收藏一个超牛的css平滑移动 jquery插件
    惊艳到不行啊,html5真的牛逼
    推荐可以代替Visio的HTML开发的作图工具:ProcessOn
    struts标签 展示富文本时遇到的问题。
    ECharts 大数据时代,重新定义数据图表的时候到了
    Xtrareport 实现交叉表数据重复显示的问题
    【转】ASP.NET程序中常用的三十三种代码
    How to find the Report Data tab in SSRS after closing it
    分享经验, 技术探讨, 共同学习.
    Reporting Services 在WIN7和2008下出现“授予的权限不足,无法执行此操作。 (rsAccessDenied)”的解决办法
  • 原文地址:https://www.cnblogs.com/netlyf/p/1627303.html
Copyright © 2011-2022 走看看