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();
注:只有子类可以给父类赋值,父类不可以给子类赋值

浙公网安备 33010602011771号