C#继承与多态

继承:在程序中,如果一个类A:B,这种机制就是继承。

     子类可以继承父类的所有内容(成员)吗?

 解析:

    1.私有成员(属性和方法)

    2.构造函数

3.final修饰过的方法,子类不能进行重写

  //SE为PM的子类

//SE继承PM

class SE:PM
    {
        public int n;
        public SE(int i,int n,int m){
    
            
    
    }
    }

  

class PM
    {
        public int money { get; set; }
        public int gaga { get; set; }
        public PM(int money, int gaga) {

            this.money = money;
            this.gaga = gaga;
        }
        public PM() { }
    }

  

  

  

  3.访问修饰符

    public    公有的

private   私有的

protected 受保护的

   java中,如果大家使用protected访问修饰符,来修饰一个变量,那么在当前包中的所有类中都可以访问。外加上不同包

   类中有继承关系的类也可以访问。

   

   

  4.揭秘子类构造

   1.Main函数

   2.子类构造,不进入子类构造体

   3.执行到父类构造,不进入父类构造体

   4.执行父类构造体   创建父类对象

   5.回到子类构造体执行

   6.子类构造体执行完毕 构造子类对象

   7.回到Main,继续后续代码执行

   

   

  5.base(父类构造)

  base第一个用法:使用属性  base.属性名

  base第二个用法;使用方法   base.方法名称相同

  base第三个用法:调用父类构造 base()

  //base.属性名

  class SE:PM
    {
        public int n;
        public SE(int i,int n,int m){

            base.gaga = i;
    
    }
    }

  //base.方法名

  

 base.show();

  //调用父类构造

 public SE(int i,int n,int m):base(){

            base.gaga = i;
            base.show();
    
    }

  

  6.继承的传递性和单根性

  C#中不支持多继承

  Java中不支持多继承  使用接口可以变相的支持多继承

  多实现//////////////////变相的多继承    接口

  

  机器语言

  汇编语言  底层+++驱动级

  面向过程  驱动级++驱动光盘 dll

  C#Java 面向对象  不支持多继承

  

  7.多态初步

    多态:多种形态

       不同的对象 对于 同一个操作   做出的响应不同 。多态。

   

   举例子:

   1. USB父类   USB鼠标/USB键盘/USB照明

   2. 鸭子    真实鸭子 /橡皮鸭子  木头鸭子(不会叫)

   3. CUT    医生/理发师/演员

   4. 打招呼  英文/含于/韩国人

   5. 交通工具  汽车/地铁/自行车

   

   

        父类有一个Cut方法,子类中有同名方法Cut

如何满足多态的条件

父类:Person

子类A:Hairdresser  理发师

子类B:Doctor:医生

        子类C:Actor :演员

  

  

  

       实现多态条件

   1.父类有一个用virtual关键字修饰的方法

   

   2.子类必须有一个同名方法,使用Override关键字

   

   3.N个子类对象放入父类类型集合。。

  

   4.依次迭代

   

原文地址:https://www.cnblogs.com/sunbin123/p/6567198.html