封装、继承、多态 基础

本文介绍了一个Unity项目中的抽象基类Shape及其派生类Circle和Rectangle的实现方式,通过这些类实现了不同形状的面积和周长计算,并展示了如何使用多态特性在一个列表中管理多种形状。
/*              #########                       
              ############                     
              #############                    
             ##  ###########                   
            ###  ###### #####                  
            ### #######   ####                 
           ###  ########## ####                
          ####  ########### ####               
         ####   ###########  #####             
        #####   ### ########   #####           
       #####   ###   ########   ######         
      ######   ###  ###########   ######       
     ######   #### ##############  ######      
    #######  #####################  ######     
    #######  ######################  ######    
   #######  ###### #################  ######   
   #######  ###### ###### #########   ######   
   #######    ##  ######   ######     ######   
   #######        ######    #####     #####    
    ######        #####     #####     ####     
     #####        ####      #####     ###      
      #####       ###        ###      #        
        ###       ###        ###              
         ##       ###        ###               
__________#_______####_______####______________
    身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃。
                我们的未来没有BUG              
* ==============================================================================
* Filename: AbstractScript
* Created:  $time$
* Author:   WYC
* Purpose:  封装、继承、多态
* ==============================================================================
*/
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AbstractScript : MonoBehaviour {

    
    void Start () {
        Circle circle = new Circle();
        circle.R = 20;

        Rectangle rectangle = new Rectangle();
        rectangle.Width = 20;
        rectangle.Height = 30;

        List<Shape> shapeList = new List<Shape>();
        shapeList.Add(circle);
        shapeList.Add(rectangle);

        foreach (var shape in shapeList)
        {
            shape.PrintArea(shape.CalculateArea());
            shape.PrintPerimeter(shape.CalculatePerimeter());
        }

    }
}

public abstract class Shape {

    public string ShapeName { get; private set; }

    public Shape(string shapeName) {
        ShapeName = shapeName;
    }

    public virtual void PrintPerimeter(double perimeter) {
        Debug.Log(ShapeName + "perimeter:" + perimeter);
    }

    public virtual void PrintArea(double area) {
        Debug.Log(ShapeName + "Area:" + area);
    }

    public abstract double CalculatePerimeter();

    public abstract double CalculateArea();
}
public class Circle : Shape
{
    public double R { get; set; }

    public Circle() : base("") {
        this.R = 0;
    }

    public override double CalculatePerimeter()
    {
        return 2 * Math.PI * R;
    }

    public override double CalculateArea()
    {
        return Math.PI * R * R;
    }
}

public class Rectangle : Shape
{
    public double Width { get; set; }
    public double Height { get; set; }

    public Rectangle() : base("长方形")
    {
        this.Width = 0;
        this.Height = 0;
    }

    public override double CalculatePerimeter()
    {
        return (Width + Height) * 2;
    }

    public override double CalculateArea()
    {
        return Width * Height;
    }
}

 

转载于:https://www.cnblogs.com/mclll520/p/7814392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值