C# --- 类的继承、封装、多态

继承

继承就是将公用的属性或方法抽离到父类的过程,这个思维称之为面向对象

    public class Polygan //这是父类,父类包含子类共有的变量及函数
    {
        public string color;
        public string name;
        public int length;
        public int width;
    }

    public class Rectangle: Polygan //这是子类,
    {
    }

注:C#不支持多重继承,只能继承自一个父类

封装

将实现方式,通过接口的形式暴漏给第三方。从而隐藏细节
父类可通过 virtual 关键字创建虚函数,使子类可通过 override 关键字重写覆盖父类的函数

覆盖与重载

覆盖

发生在继承关系中,通过virtual和override,函数名函数参数一摸一样的。

    public class Polygan  //父类:多边形
    {
        public virtual void CalcArea()
        {
            Debug.Log("Area is " + height * width);
        }
    }

    public class Triangle : Polygan  //子类:三角形
    {
        public override void CalcArea()  //覆写三角形的面积计算公式
        {
            Debug.Log("Triangle is " + height * width / 2);
        }
    }
重载

发生在任何关系中,只要保证函数名一致,参数不一致(包括带参和不带参),带参数顺序不一致,或是参数个数不一致,即可实现重载。

    public class Polygan
    {
        public void Fun1()
        {
        }
    }

    public class Triangle : Polygan
    {
        public void Fun1(string a, string b, int c)  //改变参数实现重载
        {
        }
        public void Fun1(int c,string a ,string b)  //调换参数位置实现重载
        {
        }
    }

多态


多态分为运行时多态和编译时多态

编译时多态

即在编译时就可以确认调用哪个方法。

运行时多态

就是编译时无法确认调用哪个方法,只有运行时才能确定的方法。

        Polygan polygan1 = rectangle;
        Polygan polygan2 = triangle;
        //此处Show函数应当分别指向子类的Show函数,但编译器会指向父类的Show函数
        polygan1.Show(); 
        polygan2.Show();

注:只有子类可以给父类赋值,父类不可以给子类赋值

posted @ 2023-03-22 09:07  Lycra776  阅读(2)  评论(0)    收藏  举报