• 《你必须知道的.net》读书笔记继承本质论


    继承:

       继承就是面向对象中类与类之间的一种关系。继承的类成为子类,派生类。
    被继承的类称为父类,基类 超类。使得子类就有父类的属性跟方法。同时子类也可以通过加入
    新的属性很方法或者修改父类的属性和方法建立新的类层次。
      继承机制体现了面向对象技术红的复用性,扩展性和安全性。为面向对象软件开发与模块话软件架构
    提供了最基本的技术基础

      分类:
       1实现继承(单一继承).
       2接口继承(多继承)。

    代码
       /// <summary>
           
    /// 继承本质论
           
    /// </summary>
        
           public class Bird : Animal 
           {
               
    private string type = "Bird";
               
    public override void ShowType()
               {
                   Console.WriteLine(
    "type is {0}",type);
               }
           }
           
    private string color;
           
    public string Color 
           {
               
    get { return color;}
               
    set{ color=value;}
           }

           
    public class Ckicken : Bird 
           {
               
    private string type = "Ckicken";
               
    public override void ShowType()
               {
                   Console.WriteLine(
    "type is {0}", type);
               }
               
    public void ShowColor() 
               {
                   Console.WriteLine(
    "Color is {0}", Color);
               }
           }
           
    /// <summary>
           
    /// bird2 对象和ckicken 对象在内存布局上是一样的差别就在于其引用指针的类型不同
           
    /// bird2 为Bird 的类型指针,而ckicken为Ckicken类型的指针。
           
    /// 不同的类型指针在虚拟方法表中有不同的附加信息作为标志来区别访问地址区域,称为offset
           
    /// 不同的类型指针只能在其特定的地址区域内执行,子类覆盖父类事会保证其访问地址区域的一致性
           
    /// 从而解决了不同类型的类型访问具有不同访问权限问题
           
    ///  1.执行就近原则:对于同名字段或者方法,编译器是按照顺序查找引用的,
           
    ///  也就是访问离它创建最近的字段 
           
    ///  如果type 类型设为public 则在此讲返回“Bird”值 
           
    ///  这也就是为什么在对象创建时必须将字段按顺序排列,
           
    ///  而父类要先于子类编译的原因
           
    /// </summary>
           public class Test 
           {
               
    public static void Main() 
               {
                   Bird bird2 
    = new Ckicken();
                   Ckicken ckicken 
    = new Ckicken();
               }
           }
    努力 努力在努力一点
  • 相关阅读:
    Redis安装与基本配置(转)
    redis和redis php扩展安装(转)
    fscanf()函数具体解释
    Android Studio非gradleproject编译后的apk文件在哪?
    Android利用CountDownTimer类实现倒计时功能
    Linux系统的安装
    由一个LED闪烁问题发现的MTK的LED driver中存在的问题
    OA系统权限管理设计(转载)
    Android开发之Mediaplayer
    “两地分居”的大学师生
  • 原文地址:https://www.cnblogs.com/fanxianhua/p/1652739.html
Copyright © 2020-2023  润新知