C#开发笔记
02、入门
03、进阶
04、架构
01、知识概念
01、基础语法
02、面向对象
03、集合、异常、泛型、LINQ、委托、EF
04、多线程
05、WPF
06、ASP.NET MVC
07、ASP.NET Core
08、ADO.NET、XML、HTTP、AJAX、WebService
09、常见的算法
10、数据库概念知识
11、数据库SQL查询(附建表语句)
00、高阶
05、U3D
01、基础
001、问的比较多的问题
06、前端开发
001、CSS基础
本文档使用 MrDoc 发布
-
+
首页
02、面向对象
#### 1.什么是构造函数? **概念:构造函数的方法名与类型相同、没有返回类型** **作用:完成对类的对象初始化** **创建一个类的新对象时,系统会自动调用该构造函数初始化新对象, 如果没有写定义,那么系统会自动提供一个不带任何参数的 public 构造函数** #### 2.class 和 struct 的区别? **相同点 都可以实现接口** **不同点** **1.class 是引用类型,struct 是值类型** **2.class 允许继承、被继承,struct 不允许,只能继承接口** **3.class 可以初始化变量,struct 不可以** **4.class 可以有无参的构造函数,struct 不可以,必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员** **使用场景** **1.Class 比较适合大的和复杂的数据,表现抽象和多级别的对象层次时。** **2.Struct 适用于作为经常使用的一些数据组合成的新类型,表示诸如点、矩形等主要用来存储数据的轻量级对象时,偏简单值。** **3.Struct 有性能优势,Class 有面向对象的扩展优势。** #### 3.简述一下面向对象的三大特性? **封装、继承、多态。** **封装:是通过把对象的属性的实现细节隐藏起来,仅对外提供公共的访问方法。** **继承:是通过子类继承基类、继承抽象类、继承接口实现的。** **多态:是通过重写基类的 override 方法、重写虚方法实现的。 好处是:方便维护、易扩展。 缺点是:比面向过程性能低。** #### 4.构造函数是否能被重写? **构造器 Constructor 不能被继承,因此不能重写,但可以被重载** #### 5.抽象类和接口有什么区别? **相同点:都不能直接实例化 不同点:** **1.抽象类用 abstract 修饰、接口用 interface 修饰** **2.抽象类中的方法可以实现,也可以不实现,有抽象方法的类一定要用 abstract 修饰,接口中的方法不允许实现** **3.抽象类只能单继承,接口支持多实现** **4.抽象类有构造方法,接口不能有构造方法** **5.接口只负责功能的定义,通过接口来规范类的,(有哪些功能),而抽象类即负责功能的定义有可以实现功能(实现了哪些功能)** #### 6..类的执行顺序? **执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法** #### 7.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实现类(concrete class)? **接口可以继承接口,抽象类可以实现接口,抽象类可以继承实现类,但前提是实现类必须有明确的构造函数。** #### 8.继承最大的好处? **对父类成员进行重用,增加代码的可读性、灵活性。** #### 9.请说说引用和对象? **对象和引用时分不开的,对象生成一个地址,放在堆里面,引用则指向这个地址,放在栈里面** #### 10.什么是匿名类,有什么好处? **不用定义、没有名字的类,使用一次便可丢弃。好处是简单、随意、临时的。** #### 11.重写和重载的区别? **重写方法:关键字用 override 修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同** **重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同。** **作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象** #### 12.C#中有没有静态构造函数,如果有是做什么用的? **特点: 静态构造函数既没有访问修饰符,也没有参数。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。无法直接调用静态构造函数。在程序中,用户无法控制何时执行静态构造函数。 用途 : 当类使用日志文件时,将使用这种构造函数向日志文件中写入项。** #### 13.怎样理解静态变量?静态成员和非静态成员的区别? **静态变量属于类,而不属于对象;并对所有对象所享;静态成员在加类的时候就被加载。** #### 14.属性能在接口中声明吗? **可以,不能有访问修饰符,不能初始化赋值。** #### 15.在项目中为什么使用接口?接口的好处是什么?什么是面向接口开发? **接口是一种约束,描述类的公共方法/公共属性,不能有任何的实现** **好处是:结构清晰,类之间通信简单易懂,扩展性好,提高复用性。** **面向 interface 编程,原意是指面向抽象协议编程,实现者在实现时要严格按协议来办。** #### 16.什么时候用重载?什么时候用重写? **当一个类需要用不同的实现来做同一件事情,此时应该用重写,而重载是用不同的输入做同一件事情** #### 17.静态方法可以访问非静态变量吗?如果不可以为什么? **静态方法和非静态变量不是同一生命周期,静态方法属于类,非静态变量属于具体的对象,静态方法和具体的对象没有任何关联** #### 18.在.Net 中所有可序列化的类都被标记为\_? **[serializable]** #### 19.C#中 property 与 attribute 的区别,他们各有什么用处,这种机制的好处在哪里? **一个是属性,用于存取类的字段,一个是特性,用来标识类,方法等的附加性质** #### 20.当使用 new B()创建 B 的实例时,产生什么输出? ```plain using System; class A { public A() { PrintFields(); } public virtual void PrintFields(){} } class B:A { int x=1; int y; public B() { y=-1; } public override void PrintFields() { Console.WriteLine("x={0},y={1}",x,y); } } ``` **答:X=1,Y=0;** #### 21.能用 foreach 遍历访问的对象需要实现 **接口或声明**方法的类型 **答:IEnumerable 、 GetEnumerator。**
个人天使
2025年2月12日 17:22
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码