zoukankan      html  css  js  c++  java
  • 《你必须知道的.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();
               }
           }
    努力 努力在努力一点
  • 相关阅读:
    Swagger使用总结
    idear常用快捷键
    Liunx下安装MongoDB
    python面向对象的特点,类定义等,私有属性、公有属性、成员属性
    Python,subprocess模块(补充)
    对称加密和非对称加密概述
    Python关于导入模块的一些感想:
    Python学习第二阶段Day2,模块subprocess、 logging、re
    Python学习第二阶段Day2(json/pickle)、 shelve、xml、PyYAML、configparser、hashlib模块
    Python学习第二阶段Day2,模块time/datetime、random、os、sys、shutil
  • 原文地址:https://www.cnblogs.com/fanxianhua/p/1652739.html
Copyright © 2011-2022 走看看