Unity C#基础

本文详细介绍了Unity C#的基础知识,包括面向对象的三大特性(封装、继承、多态)、值类型和引用类型的区别、装箱和拆箱的概念、接口与抽象类的对比、foreach和for循环的使用场景、string与StringBuilder的性能优化、List的使用技巧、GC的工作原理、常用数据结构的概述、委托和事件的使用,以及ref和out关键字的解释,最后讨论了结构体和类的不同之处。
摘要由CSDN通过智能技术生成

1.面向对象的三大特性

说到面向对象的三大特性,首先我们先来了解一下何为面向对象(OOP)。
面向对象 是将现实问题构建关系,然后抽象成类,给类定义属性和方法后,再将类实例化成实例,通过访问实例的属性和调用方法来进行使用,即 对象 = 属性(特征)+ 方法(行为)。
例如我们想要设计几个角色,角色有男女两种性别,外观和行为有一定差异。那么我们可以想到,一个角色不管什么性别,都得有个人样吧,所以我们先仿照自己的构造,在脑海中构思模板的样子(抽象成基类),然后先赋予模板一些共有的行为和特征(定义类的实例方法):

public class HeroInfo
{
    /// <summary>
    /// 名字
    /// </summary>
    private string name;
    /// <summary>
    /// 图标
    /// </summary>
    public string icon;
    /// <summary>
    /// 血量
    /// </summary>
    public int hp;
    /// <summary>
    /// 最大血量
    /// </summary>
    public int maxHp;
    /// <summary>
    /// 防御
    /// </summary>
    public int def;
    /// <summary>
    /// 攻击
    /// </summary>
    public int atk;
    public HeroInfo(string name)
    {
        this.name = name;
    }
    public virtual void Attack() { }
    }

此时我们要求创建 战士和法师,分别要求添加怒气和魔法值设定,以及使用攻击方式不同。
那么我们就要在模板的基础上添加和修改了。通过新建两个类继承自HeroInfo,添加怒气和魔法值设定,并重写Attack方法以达到调用相同的方法出现不同结果(多态性);

设计结束,来回顾一下整个过程。
我们先是把角色的共有特征抽象成 HeroInfo基类,这个基类并不用于实例化,而是用于让 战士类和 法师类去继承它,并实现不同的行为。这样我们就避免把一些共有的行为重复在多个类里定义,如果我们以后想对角色的行为进行变动,也只需要修改 HeroInfo,继承 HeroInfo的子类会自动获得新行为,这是继承带来的好处。
我们把 name 设计为受保护变量(private ),外界无法直接访问这个属性,通过构造传入name。这是 封装 带来的好处。
同时我们在 HeroInfo中预留了 Attack方法并用virtual 关键字修饰,所以在他子类中就能重写这个方法,达到调用相同的方法出现不同结果,这是多态

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值