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.依次迭代