Unity面试必备:C#与面向对象概念解析
需积分: 5 10 浏览量
更新于2024-06-18
收藏 837KB DOCX 举报
“Unity面试题汇总”
这篇文档主要涵盖了Unity开发相关的C#语言概念,以及面向对象编程的基本原则,包括重载、重写、封装、继承和多态。此外,还讨论了值类型与引用类型的区别,C#访问修饰符的作用,以及基础数据结构如ArrayList和List<T>的差异,以及垃圾回收(GC)的原理和优化策略。最后,提到了接口与抽象类的异同。
1. 重载和重写:重载发生于同一类中,通过不同的参数列表实现多个同名方法;重写则发生在父类与子类之间,子类重写父类的方法,要求方法名和参数列表完全一致。重载在编译时决定调用哪个方法,而重写是在运行时根据对象的实际类型确定。
2. 面向对象的三大特点:
- 封装:隐藏对象的内部细节,只暴露必要的接口,以保护数据安全并简化使用。
- 继承:允许一个类(子类)继承另一个类(父类)的特性,增强了代码的复用性和可扩展性。
- 多态:同名方法在不同上下文中表现出不同行为,允许在运行时动态绑定。
3. 值类型与引用类型:
- 值类型(如int, struct)存储在栈中,直接存储实际数据,访问速度快,但不能共享。
- 引用类型(如class)存储在堆中,存储的是指向数据的指针,访问速度相对较慢,但可以共享。
- 值类型继承自System.ValueType,引用类型继承自System.Object。
4. 访问修饰符:
- public:公共访问,所有地方都能访问。
- private:私有访问,只有在本类内可访问。
- protected:受保护访问,本类和其子类可访问。
- internal:程序集内访问,只能在定义类的同一程序集中访问。
- protected internal:受保护和内部访问,本类、子类和同一程序集内可访问。
5. 引用类型的基类:所有引用类型都继承自System.Object,而值类型除了直接继承System.ValueType外,还隐式继承自System.Object。
6. ArrayList与List<T>:
- ArrayList不支持泛型,可能导致类型转换损失,且需要进行装箱拆箱操作。
- List<T>是泛型集合,保留了数据类型,无需装箱拆箱,效率更高。
7. 垃圾回收(GC):
- GC是为了回收不再使用的内存,防止内存泄漏。
- 避免GC频繁执行的策略包括减少创建对象,使用静态成员,以及用StringBuilder替换String进行字符串拼接。
8. 接口与抽象类:
- 接口不能实例化,只能定义方法、属性等,用于强制实现特定功能。
- 抽象类可以包含方法实现,可以被实例化(如果非抽象),或者作为其他类的基类。
- 类可以实现多个接口,但只能继承一个抽象类。
- 接口更强调“是什么”,抽象类则强调“怎么做”。
2023-03-04 上传
2021-11-24 上传
2020-05-09 上传
2023-12-08 上传
大俊哥
- 粉丝: 163
- 资源: 26
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用