zoukankan      html  css  js  c++  java
  • 面向对象编程的三大特征: 封装、继承、多态

    一、封装:隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程。

    通过访问符实现

    private(本类私有)、public(所有类可以共享)、protected(保护-本类和其子类可以共享)、internal(同一个项目共享)

    二、继承:

     1。 在类中存在4中关系:继承关系、组合关系、利用关系、实例化关系

      如: 驾驶员  汽车    宝马轿车   轮胎  我的宝马轿车

    2。一个类可以将其属性和方法派生给其他类,该类叫基类(父类/超类),派生出的类叫派生类(子类)

    3。 基类中的哪些属性和方法可以被派生?

    4。构造函数的调用顺序:先调用基类的构造函数再子类的构造函数

    抽象基类:当基类中的某个函数函数体无法实现时声明称抽象函数,

    抽象函数语法:

    访问符  abstract 返回类型 函数名(参数);//没有函数体

    当类中的某个函数为抽象函数时,该类必须是抽象的,不能创建抽象类的实例

    抽象函数在子类中必须实现函数体

    子类中实现时:

    访问符  override 返回类型 函数名(参数)

    {...}

    5.虚函数:

    如果基类的中的某个函数允许子类重写该函数的功能,则该函数应该声明为虚函数

    属性、方法、函数都可以声明为virtual

    成员变量和静态函数、构造函数不能声明为virtual

    语法:

    访问符  virtual 返回类型 函数名(参数)

    {...}

    在子类中重写时:

    访问符  override 返回类型 函数名(参数)

    {...}

    继承的好处:

    1。重用代码

    2。统一的接口

    3。容易维护

    三、多态—静态多态和动态多态

    1。静态多态:静态多态指一个实体,它同时存在于各种形式中.通过函数重载实现

    函数重载是为类中的两个或多个函数使用同一名字的过程

    函数重载的条件:

    函数名相同的函数必须满足:函数的参数数量不同 或 参数类型不同 或参数顺序不同

            

    int sum(int a,float b)

    int sum(int a,int b,int c)

    float sum(float a,float b)

    void sum(float a,int b)

    double add(double a,double b)

    2.动态多态

    动态多态中,函数执行的决定是在运行时进行的

    C#使用两种方法来实现动态多态:抽象类和  虚函数

    class A

    {

       private int a1;

       protected  int a2;

       public A(int a1,int a2)

       {

          this.a1=a1;

          this.a2=a2;

       }

       public virtual void Display()

    {

        Console.WriteLine("a1={0},a2={1}",a1,a2);

    }

    }

    class B:A

    {

       private int b1;

       public B(int a):base(0,a)

       {  }

       public B(int a2,int b):base(0,a2)

       public  override void Display()

    {

        base.Display();

        Console.WriteLine("b1={0}",b1);

    }

    }

    A  a=new A();

    a.Display();

    a=new B(10);

    a.Display();

    四、接口

    接口在你想让后面的类都遵守标准的函数结构的时候被使用,这里类将实现功能

    接口定义属性、方法和事件,它们被称为接口的成员。

    interface关键字声明接口。

    接口成员总是公有的。

    你可以仅在接口中声明方法、函数和属性。你不能在接口中声明变量。

    接口声明方法,它被类实现。类可以从单个类继承但可以实现多个接口。

    多个无关的类可以实现同一个接口

    捕获无关联类的相似性,而无须加强类关系

    如:

    <<interface>>

    Runner

    +start()

    +run()

    +stop()

    Person

    +start()

    +run()

    +stop()

    +dance()

    Car

    +start()

    +run()

    +stop()

    +fillFuel()

    +crack()

    Bird

    +start()

    +run()

    +stop()

    +fly()

    /*
    以上内容为本人业余时间整理,部分内容来源网络,如有错误欢迎各位批评指正。


    */
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/Lin267307031/p/2862637.html
Copyright © 2011-2022 走看看