zoukankan      html  css  js  c++  java
  • C#里封装 继承 多态

    一、封装
    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();
    }
    }
    }
    上面代码被编译执行时结果是
    Printing int: 5
    Printing float: 500.263
    Printing string: Hello C#:

  • 相关阅读:
    .net core web
    ASP.NET HttpContext类
    页面周期与事件
    (49) C# npoi 读写office
    vs2017 vs2019秘钥
    HDU 2767 Proving Equivalences(强连通 Tarjan+缩点)
    【bzoj1013】[JSOI2008]球形空间产生器sphere
    P1979 [NOIP]华容道
    hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
    hdu3709 Balanced Number 树形dp
  • 原文地址:https://www.cnblogs.com/linnew/p/12346214.html
Copyright © 2011-2022 走看看