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将重写它

  • 相关阅读:
    OpenCV 2.4.11 VS2012 Configuration
    [LeetCode] 11. Container With Most Water 装最多水的容器
    Android rxjava2的disposable
    Android在应用设置里关闭权限,返回生命周期处理
    Android 使用greenDAO 3.2.2 操作外部数据库
    Android中intent相关,setFlag(xx);
    Android 关于Acitivity 的setFlag以及launchmode的总结
    GreenDao3.0新特性解析(配置、注解、加密)
    Android RecycleView实现混合Item布局
    Android各大手机系统打开权限管理页面
  • 原文地址:https://www.cnblogs.com/netlyf/p/1627303.html
Copyright © 2011-2022 走看看