您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

1.4多态

静态多态 运行前就可以判断调用的是哪种方法,按F12可跳转至调用方法
运行时多态 运行前无法确认调用了那种方法,只有在运行时才能确定

public class Polygon
{
    public int Length;
    public int Width;
    public string name;

    public float Area;

    public void ShowBaseInfo()
    {
        Debug.Log(name + "的长为" + Length + ",宽为" + Width + ",是" + color + "色的");
    }

    public virtual void CalaArea()//virtual 代表虚函数,意味着子类可以覆盖其实现
    {
        Area = Length * Width;
    }

    public virtual void Show()
    {
        Debug.Log("Polygon Show");
    }
}

 //派生类(子类)
class Rectangle : Polygon
{
    public Rectangle()
    {

    }

    ~Rectangle()
    {

    }

    public override void CalaArea()
    {
        Area = Length * Width;
    }

    public override void Show()
    {
        Debug.Log("Rectangle Show");
    }
}

class Triangle : Polygon
{
    public Triangle()
    {

    }

    ~Triangle()
    {

    }
    public override void CalaArea()//override 代表覆盖
    {
        Area = Length * Width * 1/2;
    }

    public override void Show()
    {
        Debug.Log("Triangle Show");
    }
}

public class Inherit : MonoBehaviour
{
    void Start()
    {
        Rectangle rectangle = new Rectangle();
        rectangle.Length = 2;
        rectangle.Width = 3;
        rectangle.name = "矩形";
        //静态多态 运行前就可以判断调用的是哪种方法,按F12可跳转至调用方法
        rectangle.CalaArea();
        Debug.Log(rectangle.name + "的面积是" + rectangle.Area);

        Triangle triangle = new Triangle();

        //运行时多态 运行前无法确认调用了那种方法,只有在运行时才能确定
        //          父       =     子 
        Polygon basePartent1 = rectangle;
        Polygon basePartent2 = triangle;

        basePartent1.Show();
        basePartent2.Show();
    }

}


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进