zoukankan      html  css  js  c++  java
  • C# 面向对象

    什么是面向对象:面向对象就是所以的操作都是基于对象,就好比如让车子走起来,走起来这个动作是车子这个对象的,车子.走起来。

    面向对象的特性:三大特性“封装、继承、多态”

    一、封装

    1.1封装的概念:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。

    1.2封装的优点:

    A.良好的封装能够减少耦合(比如实现界面和逻辑分离)。

    B.可以让类对外接口不变,内部可以实现自由的修改。

    C.类具有清晰的对外接口,使用者只需调用,无需关心内部。

    D.因为封装的类功能相对独立,因此能更好的实现代码复用。

    E.可保护代码不被无意中破坏,通过私有字段等实现内部。(私有属性、方法)

    二、继承

    2.1继承的概念:当一个对象能够获取另一个对象的非私有属性、方法作为定义为自己的部分或全部时,我们称之为继承关系。在继承中,被继承的对象叫做父类或者基类,继承的对象称为子类或者派生类。一个类可以有多个派生类,也就是一个类可以被多个类继承.

    2.2继承的特点:

    A.子类(派生类)拥有父类(基类)所以的非私有属性、方法。//延续

    B.子类可以拥有自己独特的特性(属性、方法)。//新增

    C.子类可以以自己的方式实现父类的功能。//方法重写

    2.3继承需要注意的地方

    A.父类进行改变子类也会进行改变。

    B.继承破坏了封装,父类的细节暴露给了子类,增加了耦合性。

    C.父类的私有成员(属性、方法)子类是无法访问。

    D.被“sealed”关键字修饰的类将不能被继承;

    E.被“protected”修饰的成员或者数据可以直接被派生类访问,属于“可以在家族里分享的秘密”。

    F.善用“base”关键字,显示调用合适的自定义基类构造函数而不是使用默认构造函数。

    E。C#只能一个类直接继承一个类。

    三、多态

    3.1多态的概念:同一个操作用于不同的对象,会有不同的解释,产生不同的结果。这种特性称为多态性。

    3.2多态的分类:编译时的多态(重载)、运行时的多态(重写)

    重载(overload):重载指的是同一个类中有两个或多个名字相同但是参数(参数签名)不同的方法,(注:返回值不能区别函数是否重载),重载没有关键字。//方法名相同,参数不同

    重写(override):重写是指子类对父类中虚函数或抽象函数的“覆盖”,重载也叫过载。//虚方法是用virtual关键字声明的方法

    两种重写:

    A.使用override关键字重写.public override void Eat(){}//覆盖父类方法

    B.使用new关键字重写.public new void Eat(){}//隐藏父类方法

    两者的区别在于如果我们使用override关键字,父类的方法被覆盖,A b = new B();b.Eat();执行的是B(子类)的Eat()方法,因为父类的被覆盖了(B继承于A )。

    我们使用new的话,只是隐藏了父类的方法,方法还是会被执行,b.Eat();则执行的是A(父类)的Eat()方法。我们修改成B b = new B();b.Eat();执行的就是B(子类)的了。

    3.3 发生条件:

    重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关。

    重写,必然发生在基类和派生类中,其类函数用virtual修饰,派生类用override修饰。

    覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字 new 修饰 

    隐藏,在子类中可以通过new 隐藏父类的方法

     

  • 相关阅读:
    k3d安装k3s
    python自动目录环境
    http状态码
    linux下切换jdk版本
    pycharm py代码默认模板设置
    kubectl命令
    国内安装k3s
    minikube安装
    hmac-md5
    abstract class 与 interface
  • 原文地址:https://www.cnblogs.com/UnrealEra/p/7026874.html
Copyright © 2011-2022 走看看