• C# 继承


    C# 是面向对象的高级编程语言。

    继承是面向对象的特征之一。

    所谓继承,字面意义。通俗而言 子承父业。

    现有两个类

    A,B二类,分别有两个字段,有两个方法,有两个构造函数。

    这两个类实际意义没有多少。 但是记住,高级语言就因为面向对象才是高级语言。面向对象基本就是现实中的事务的高级抽象

    可以想象这个AB二类是这个独立的人,每个人都是独立ID,独立自我介绍。

    所以有两个独立的class。

    Class A 
      {
          public string Name=>"Class A";
    
          public A()=>Console.WriteLine("这是A类的初始化,也就是构造函数");
    
          public void ID()=>Console.WriteLine($"我的id是{Name}");
      }
    
    Class B
      {
          public string Name=>"Class B";
    
          public B()=>Console.WriteLine("这是A类的初始化,也就是构造函数");
    
          public void ID()=>Console.WriteLine($"我的id是{Name}");
      }

    但是,之前说过的面向对象是现实事务的高级抽象。

    抽象!

    如果 就按照上面的方式来建立事务,恐怕写一个软件会把人给累死。

    所以,继承的意义就存在的。

    高度抽象【针对现实事务】

    就好比这个两个类中都一个String 的公共属性。 如果我们只写一遍就好了。

    那么思考一下,继承。

    emm,AB都有Name,

    如果 AB都有一个父亲,父亲有一个名为Name的遗产。【不考虑财产分割,那是别的问题】

    那么AB是不是都会有了?

    那么 使用继承该如何使用呢?

    Class NameList
      {
        public string Name{get;set;}
      }
      
    
    Class A:NameList
      {
       
          public A()=>Console.WriteLine("这是A类的初始化,也就是构造函数");
    
          public void ID()=>Console.WriteLine($"我的id是{Name}");
      }
    Class B:Namelist
      {
        
    
          public B()=>Console.WriteLine("这是A类的初始化,也就是构造函数");
    
          public void ID()=>Console.WriteLine($"我的id是{Name}");
      }

     See,只打了一遍就可以在两个不同的类中进行使用了。

    OK,那么这两个类中还有一个叫 ID的方法,都是一模一样,是不是也可以使用继承呢?

    嗯 是可以!

    那么我们在改一下

      class NameList
        {
            public string Name { get; set; }
    
            public void ID() => Console.WriteLine($"我的id是{Name}");
        }
    
    
        class A : NameList
        {
    
            public A() => Console.WriteLine("这是A类的初始化,也就是构造函数");
    
           
        }
        class B : NameList
        {
    
            public B() => Console.WriteLine("这是A类的初始化,也就是构造函数");
          
        }

    到这里为止,继承的基本使用就介绍完了。

    继承的符号:是冒号

    不过要记住,如果继承类,那么这个继承的类叫做父类,或者基类【也就是文中NameList】,也只能有有一个父类

  • 相关阅读:
    【每日英语】
    【百宝箱】CLion: Cound not load cache
    C# WPF:这次把文件拖出去!
    C# WPF:快把文件从桌面拖进我的窗体来!
    两个List< string>比较是否相同的N种方法,你用过哪种?
    分享套接字数据包序列化与反序列化方法
    如何从含有占位符的字符串生成一个ReactNode数组
    vscode 插件配置指北
    第十一周总结
    机场&代理商-关系图
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9207157.html
Copyright © 2020-2023  润新知