• C#里封装 继承 多态


    C#里封装 继承 多态(包教包会)
    https://blog.csdn.net/qq_42075398/article/details/82714076

    一、封装
    C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。
    在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将数据和操作数据的方法结合成一个单位。设计类时,不希望直接存取类中的数据,而是希望通过方法来存取数据。这样就可以达到封装数据的目的,方便以后的维护升级,也可以在操作数据时多一层判断。
    此外,封装还可以解决数据存取的权限问题,可以使用封装将数据隐藏起来,形成一个封闭的空间,然后可以设置哪些数据只能在这个空间中使用,哪些数据可以在空间外部使用。一个类中包含敏感数据,有些人可以访问,有些人不能访问,如果不对这些数据的访问加以限制,后果将会非常严重。所以要对类的成员使用不同的访问修饰符,从而定义他们的访问级别。

    封装语法:
    Public 数据类型 变量名
    {
    get
    {
    return 变量名
    }
    set
    {
    变量名=value;
    }
    }

    这里写图片描述
    这里写图片描述

    当然了!get和set有快捷键的:光标选择要封装的属性然后右键点击快速操作和重构…(Chrl+.)点击封装字段(并使用属性)

    这里写图片描述

    这里写图片描述


    二、继承
    继承是面向对象最重要的特性之一。任何类都可以从另外一个类继承,这就是说,这个类拥有它继承类的所有成员。在面向对象编程中,被继承的类称为父类或基类。C#中提供了类的继承机制,但只支持单继承,而不支持多继承,即在C#一次只允许继承一个类,不能同时继承多个类。
    承语法:
    Public class 类名:父类名

    如何使用父类里面的成员变量,方法,构造函数?
    关键字:base

    成员变量:
    base.成员变量名
    方法:
    base.方法名

    **一个类只能继承一个父类跟Java不一yangc#中类继承只允许单继承,但是接口继承允许多继承 ,一个子接口可以有多个父接口, 接口可以从零或多个接口中继承.级继承常会引起继承来的类之间的混乱,继承而来的方法往往没有唯一性,所以C#中类的继承只可以是一个样
    但是可以同时现接口!
    这里写图片描述
    ---------三、多态
    多态性意味着有多重形式。
    在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。
    多态性可以是静态的或动态的。
    在静态多态性中,函数的响应是在编译时发生的。
    在动态多态性中,函数的响应是在运行时发生的。

    1.静态多态性
    在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C# 提供了两种技术来实现静态多态性。
    分别为:
    1.1方法重载:
    可以在同一个范围内对相同的方法名有多个定义。
    方法的定义必须彼此不同,可以是参数列表中的参数类型不 同,也可以是参数个数不同。
    不能重载只有返回类型不同的方法声明。

    1.2运算符重载

    2.动态多态性
    当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法。
    2.1:虚方法是使用关键字 virtual 声明的。
    2.2:虚方法可以在不同的继承类中有不同的实现。
    2.3:对虚方法的调用是在运行时发生的。
    2.4:动态多态性是通过抽象类和虚方法实现的。

    定义虚方法:
    访问修饰符 virtual 返回的数据类型/void 方法名()
    {
    //执行代码,也可以完全不写
    }
    重写父类的方法(子类中):
    访问修饰符 override 返回的数据类型
    void 方法名()
    {
    //执行代码
    }-

    namespace PolymorphismApplication
    {
       class Printdata
       {
          void print(int i)
          {
             Console.WriteLine("Printing int: {0}", i );
          }
    
      void print(double f)
      {
         Console.WriteLine("Printing float: {0}" , f);
      }
    
      void print(string s)
      {
         Console.WriteLine("Printing string: {0}", s);
      }
      static void Main(string[] args)
      {
         Printdata p = new Printdata();
         // 调用 print 来打印整数
         p.print(5);
         // 调用 print 来打印浮点数
         p.print(500.263);
         // 调用 print 来打印字符串
         p.print("Hello C#");
         Console.ReadKey();
      }
    

    }
    }//参考资料在QQ群:683782676
    上面代码被编译执行时结果是
    Printing int: 5
    Printing float: 500.263
    Printing string: Hello C#:

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    Search Insert Position
    Sum Root to Leaf Numbers
    String to Integer (atoi)
    Populating Next Right Pointers in Each Node
    Triangle
    Pascal's Triangle II
    Longest Consecutive Sequence
    属性透明度
    ul的列表符号在IE6下显示不全
    table的属性border-collapse 设置边框是否合并
  • 原文地址:https://www.cnblogs.com/sunny3158/p/14598902.html
Copyright © 2020-2023  润新知