Unity面试必备:C#与面向对象概念解析

需积分: 5 0 下载量 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 上传