Unity高级开发面向对象编程知识总结

本文详细介绍了Unity中面向对象编程的核心概念,包括封装、继承、多态等特性,以及类、对象、构造函数、垃圾回收机制、抽象类、接口等内容,帮助开发者深入理解Unity中的C#面向对象编程。
摘要由CSDN通过智能技术生成

请添加图片描述

@作者 : SYFStrive

@博客首页 : HomePage

📜: C#面向对象

📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗

📌:觉得文章不错可以点点关注 👉:UnityC#编程干货🔗

请添加图片描述

提示:以下是本篇文章正文内容

面向对象的三大特性

  1. 封装 : 用程序语言来形容对象
  2. 继承 :复用封装对象的代码;儿子继承父亲,复用现成代码
  3. 多态:同样行为的不同表现,儿子继承父亲基因但是有不同的行为表现

面向对象的七大原则

① 单一职责原则(Single Responsibility Principle)

     👉单一职责原则又称单一功能原则,它规定一个类应该只有一个发生变化的原因。

② 里氏替换原则(Liskov Substitution Principle)

     👉氏替换原则的意思是,所有基类在的地方,都可以换成子类,程序还可以正常运行。这个原则是与面向对象语言的继承特性密切相关的。

③ 依赖倒置原则(Dependence Inversion Principle)

     👉程序要依赖于抽象接口,不要依赖于具体实现

④ 接口隔离原则(Interface Segregation Principle)

     👉客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

⑤ 迪米特法则(Law Of Demeter)

     👉迪米特法则又叫作最少知识原则,一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话。

⑥ 开闭原则(Open Close Principle)

     👉软件实现应该对扩展开放,对修改关闭,其含义是说一个软件应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化的。

⑥ 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)

     👉组合/聚合复用原则是通过将已有的对象纳入新对象中,作为新对象的成员对象来实现的,新对象可以调用已有对象的功能,从而达到复用。

封装✔

类和对象基本概念

  1. 一般在namespace中声明
  2. 具相同特征,相同行为,一类事物的抽象,类是对象的模板,可以通过类创建对象。
  3. 声明类的关键词:Class
  4. 类的声明类对象声明两个概念
  5. 类的声明: 👉 类(类是少的数引用类型)似枚举和结构体(值类型) 的声明 👉 类的声明相当于是声明了一个自定义的变量类型,用来抽象现实实物的
  6. 类对象的声明: 👉 相当于声明一个指定类的变量
  7. 对象是类创建出来的 是用来表象现实中的对象个体
  8. 类创建对象的过程 👉 称之为实例化对象
  9. 对象都是引用类型
  10. null :空引用类型为null的时候指的是内存堆没有分配

类声明的语法

  1. 声明类类名使用 👉 怕斯卡命名法(简单理解首字母大写)
  2. 相关语法如 👇:
class 类名
{
    //特征 👉 成员变量
    //行为 👉 成员方法
    //保护特征 👉 成员属性
    
    //构造函数 和 析构函数
    //索引器
    //运算符重载
    //静态成员
    
	ヾ(@⌒ー⌒@)ノ……
}

类实例化相关语法

// 引用类型
//类名 变量名; 			 (栈指向堆地址值是空的没有分配堆内存)
//类名 变量名 = null;	 (栈指向堆地址值是空的没有分配堆内存)
//类名 变量名 = new 类名;	(存在栈指向堆的内存空间使其在堆中新开了个房间(这时是空的))
// 使用new时(相当于开辟一个新的空间):相当于创建一个新对象
面向对象 👉 new……;

类成员变量和访问修饰符

  • 成员变量特点如 👇:
  1. 用于描述对象的特征
  2. 可以是任意变量类型(枚举,结构体,类对象)
  3. 是否初始化根据需求而定
  4. 声音一个Person类 如 👇
class Person
{
    public string name;
    public int age;
    public E_Sex sex;
    public Person[] boyFriend; (类名一样的变量类型 👉 初始值为空)
    public Position Pos;(Position结构体)
    注意:如果要声明一个和自己相同类型的成员变量时,不能对他进行实例化/或设置为空(会死循环!!)
    ……
}
  • 三个访问修饰符
  1. public: 公开的,所有对象都能访问和使用
  2. private: 私有的,只有自己内部才能访问和使用, 变量前不写默认为该状态
  3. protected: 只有自己内部和子类才能访问和使用,继承的时候用到
class Person
{
    public 	int a;
    private int b;
    protected int c;
}
  • 检查默认值

    1. Default()

成员方法

  1. 和结构体中函数的声明使用差不多
  2. 用来描述对象的行为,在类中声明
  3. 受访问修饰符的影响
  4. 不需要加static关键字
  5. 成员方法需要实例化才能使用
class Person
{
    //特征——成员变量
    public bool sex;
    public string nanme;
    public float height;
    public int age;
    public Person[] friend;
    
    /// <summary>
    /// 添加朋友扩容数组 
    /// </summary>
    /// <param name="p">添加朋友P</param>
    public void AddFriend(Person p)
    {
        if (friend ==null)
        {
            friend = new Person[] { p };
        }
        else
        {
            //数组扩容+1
            Person[] newFriend = new Person[friend.Length + 1];
            for (int i = 0; i < friend.Length; i++)
            {
                newFriend[i] = friend[i];
            }
            
            //将新成员p存在新数组的最后一个索引
            newFriend[newFriend.Length - 1] = p;
        }
    }
}

构造函数

  1. 在实例化对象时会调用的用于初始化的函数,如果不写就默认存在一个无参构造函数
  2. 和结构体中构造函数的写法一致,(类允许自己申明一个无参构造函数 结构体是不允许的)
  3. 无返回值,函数名和类名必须相同,一般都是public,可以重载构造函数
  4. 声明有参构造函数之前最好一起声明一个无参构造函数,声明有参构造时默认的无参构造就不存在了,要手动声明
class Person
{
    //特征——成员变量
    public string nanme;
    public float height;
    public int age;
    public Person[] friend;

    
    //构造函数 实现对象实例化时 初始化
    //构造函数可以重载
    //无参构造函数
    public Person()
    {
        nanme = "郭先生";
        age = 18;
        0 = true;
        height = 180;
    }
    
    //有参构造函数
    public Person(string name, int age,float height) :this()
    {
        this.name = name;
        this.age = age;
        this.height = height;
    }
}

Person p = new Person("郭先生"",18,120f);

  • 67
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 56
    评论
评论 56
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SYFStrive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值