C#.NET面试题汇总系列二:面向对象
0. 参考文档
1. 什么是构造函数?
概念:构造函数的方法名与类型相同、没有返回类型
作用:完成对类的对象初始化
创建一个类的新对象时,系统会自动调用该构造函数初始化新对象, 如果没有写定义,那么系统会自动提供一个不带任何参数的 public 构造函数
2. C#中的静态构造函数
静态构造函数既没有访问修饰符,也没有参数。
在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类,无法直接调用静态构造函数
在程序中,用户无法控制何时执行静态构造函数
3. 构造函数是否能被重写?
构造器Constructor不能被继承,因此不能重写,但可以被重载
4. class和struct的区别?
相同点:都可以实现接口
不同点:
- class是引用类型,struct是值类型
- class允许继承、被继承,struct不允许,只能继承接口
- class可以初始化变量,struct不可以
- class可以有无参的构造函数,struct必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员
5. C#中类成员的访问修饰符有哪些?
private : 私有成员, 在类的内部才可以访问
protected : 保护成员,该类内部和继承类中可以访问
public : 公共成员,完全公开,没有访问限制
internal: 在同一程序集内可以访问
6. 面向过程和面向对象的区别
面向过程和面向对象都是解决问题的逻辑方法,分析问题既可以用面向对象的方法来思考,也可以用面向过程方法来解决,但两者还是有一定区别
面向过程:是分析问题并解决问题所需要的步骤,强调是解决问题的步骤。可以先定义多个函数,在使用的时候逐步调用函数即可
面向对象:是把问题分解成多个对象,强调的是解决问题的行为表现
7. 面向对象的三大特性
封装:是通过把对象的属性的实现细节隐藏起来,仅对外提供公共的访问方法
继承:是通过子类继承基类、继承抽象类、继承接口实现的
多态:是通过重写基类的override 方法、重写虚方法实现的。 好处是:方便维护、易扩展。 缺点是:比面向过程性能低
8. 继承最大的好处
对父类成员进行重用,增加代码的可读性、灵活性
9. 什么时候用重载?什么时候用重写?
当一个类需要用不同的实现来做同一件事情,此时应该用重写,而重载是用不同的输入做同一件事情
10. 抽象类和接口有什么区别?
相同点:都不能直接实例化
不同点:
-
抽象类用abstract修饰、接口用interface修饰
-
抽象类中的方法可以实现,也可以不实现,接口中的方法不允许实现
-
抽象类只能单继承,接口支持多实现
-
抽象类有构造方法,接口不能有构造方法
11. 普通类与接口的区别
相同点:
- 都可以从多个接口继承
- 都可以包含事件、索引器、方法和属性
不同点:
- 接口不能直接实例化,类可以
- 接口不包含方法的实现,类包含
- 可以继承多个接口,但只能继承一个类
- 接口不能实现部分,类可以定义为部分类
12. 接口的好处是什么?
接口是一种约束,描述类的公共方法/公共属性,不能有任何的实现
好处是:结构清晰,类之间通信简单易懂,扩展性好,提高复用性
13. 类的执行顺序?
执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法
14. 请说说引用和对象
对象和引用时分不开的,对象生成一个地址,放在堆里面,引用则指向这个地址,放在栈里面
15. 什么是匿名类,有什么好处?
不用定义、没有名字的类,使用一次便可丢弃。好处是简单、随意、临时的
16. 重写和重载的区别
重写方法:关键字用override修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同
重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同
作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象
17. C#中 property 与 attribute的区别
一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质
18. 能用foreach遍历访问的对象需要实现接口或声明方法的类型
需要实现IEnumerable接口或声明GetEnumerator方法的类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了