1、静态类和静态成员有哪些功能特性? 实现代码?
静态类和静态成员是指使用static关键字定义的类或成员,凡是static类的成员一定是static成员,不然会报错的。静态类和成员的一大特点就是它们是独一无二的。如果是static类,那么它是不能实例化的,而且加载在内存中只有一个;如果是static变量,方法,这个类可以被实例化的话,无论实例化多少次,static变量或方法始终只有一个。
如下:
(1)、静态成员
public class StatTicMember
{
public static string testA = string.Empty;
}
class Program
{
static void Main(string[] args)
{
//StaticConstruct strc = new StaticConstruct();
//StaticConstruct strcValue = new StaticConstruct(string.Empty);
StatTicMember sMember1 = new StatTicMember();
StatTicMember.testA = @"静态成员";
Console.WriteLine(StatTicMember.testA);
StatTicMember sMember2 = new StatTicMember();
Console.WriteLine(StatTicMember.testA);
Console.ReadLine();
}
}
结果:

静态成员特点:
a、必须通过类名引用,不能用类的对象来引用;
b、无论类被实例化多少次,在内存中只有同一块区域;
c、静态方法中如果引用方法外的变量或方法,它们也必须是静态的,如
public class StatTicMember
{
public static string testA = string.Empty;
public string testB = string.Empty;
public static void Method()
{
testA = @"my";//正确
//testB = @"my";//错误
}
}
(2)、静态类
public static class StaticClass
{
public static string testA = string.Empty;
public static void StaticMethod()
{
Console.WriteLine(@"静态方法");
}
}
class Program
{
static void Main(string[] args)
{
StaticClass.testA = @"静态类";
Console.WriteLine(StaticClass.testA);
StaticClass.StaticMethod();
Console.ReadLine();
}
}
结果:

静态类特点:
a、成员必须也是静态的;
b、不能别实例化,引用内部成员直接用类名;
c、是密封类;(注:密封类是指这个类不能用作基类,不能是抽象类,也就是不能派生。)
d、不能包含构造函数。
静态类和成员使用场合,静态类不能泛滥使用,因为它一旦加载了,就在内存中有一块区域,不论你用或不用,它都在那里。占用了内存。如下场合可以使用:
a、全局的变量,整个工程中都用到的一个变量,而且值不轻易改变,即使改变所有模块都必须要做出反应。
b、不操作实例数据,不与代码中特定类关联的方法,比如Math类中的一些方法。
2、密封类功能特性? 实现代码? 为什么要使用密封类?
密封类是指用sealed关键字修饰的一种类,它的目的是防止派生,也就是这种类不能被继承。
特点:
不能用作基类,不能抽象,密封类的调用比较快。
public sealed class SealedClass
{
public string testA = string.Empty;
}
3、什么是抽象类? 功能特性? 实现代码? 接口与抽象类的区别?
抽象类是指用abstract关键字修饰的类。作用是派生多个类,共享基类的公用方法和属性。
public abstract class AbstractClass
{
public abstract void CommonMethod();
}
public class ChildClass1 : AbstractClass
{
public override void CommonMethod()
{
Console.WriteLine(@"实现公用方法1");
}
}
public class ChildClass2 : AbstractClass
{
public override void CommonMethod()
{
Console.WriteLine(@"实现公用方法2");
}
}
class Program
{
static void Main(string[] args)
{
ChildClass1 chc1 = new ChildClass1();
chc1.CommonMethod();
ChildClass2 chc2 = new ChildClass2();
chc2.CommonMethod();
Console.ReadLine();
}
}
结果:

抽象类和接口的区别:
a、类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类叫做抽象类。而接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做...”.抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中;
b、接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;
c、一个类一次可以实现若干个接口,但是只能扩展一个父类;
d、接口可以用于支持回调,而继承并不具备这个特点;
e、抽象类不能被密封;
f、抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然也可以声明为虚的;
g、(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上;
h、抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的交给子类去实现;
i、好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染;
j、如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法。
分享到:
相关推荐
本资源提供了C#基础知识的系统整理,对于期末考试有一定的帮助作用。下面是从给定的文件中生成的相关知识点: 第一章 1. C#应用程序可以使用除Word应用程序以外的工具和方法进行开发。 2. 命名空间可以签到。 3. ...
一、C#基础 C#的基础部分涵盖了语法、变量、数据类型、控制结构(如if语句、switch语句、循环)、函数、类和对象等核心概念。理解这些基础知识是构建任何C#程序的基石。此外,手册可能还会涉及命名空间、接口、继承...
【标题】"文件整理基础部分C#代码"的描述中提到了C#编程语言的应用基础知识,这可能包括了变量声明、数据类型、控制结构(如if语句、for循环、while循环)、函数定义与调用、类与对象、继承、接口、异常处理等核心...
以上就是C#常用的知识点,掌握这些基础知识将有助于你构建和维护高质量的C#应用程序。在实际编程过程中,还需要不断学习和理解更高级的主题,如并发处理、单元测试、设计模式等,以提升专业技能。
### C#基础知识及计算机原理 #### 题目解析 **Question1.** - **问题描述不清晰,无法直接给出知识点,但从题目编号判断可能是C#语言的基础概念。** **Question2.** - **选项含义不明,但根据题目描述猜测可能...
第五章讨论了对象和类型,如引用传递与值传递的区别,值类型和引用类型的赋值行为,以及结构和类的差异。属性提供了一种封装数据的方式,Object类是所有.NET类的基类。 后续章节继续涵盖了数组和集合、委托和事件、...
一、C#基础 1. 变量与数据类型:C#支持基本数据类型如int、float、double、bool,以及引用类型如string、object等。变量必须先声明后使用,遵循强类型检查。 2. 控制流:包括条件语句(if-else、switch)、循环...
本资源“c#版数据结构和算法”正是针对这一需求而整理的,旨在帮助开发者深入理解数据结构和算法,并能在C#环境中熟练运用。 数据结构是存储和组织数据的方式,它提供了一种高效管理和访问数据的方法。常见的数据...
从给定的C#基础测试题目中,我们可以总结出一系列重要的C#编程概念和知识点,这对于初学者理解和掌握C#语言的基本原理非常有帮助。以下是根据题目内容整理的关键知识点: ### 1. 抽象类与抽象方法 - **抽象类**:不...
"PPT实例"通常用于教学或演示,其中可能包含了关于C#.Net的逐步教程,涵盖了变量、数据类型、控制结构、类与对象、异常处理、文件操作等基础知识。通过PPT,学习者可以更直观地理解编程概念。 "xmind"文件可能是一...
7. **C#的集成开发环境(IDE)组件**:C#的IDE主要包括通用语言运行时CLR、基础类库、ADO.NET(数据库访问技术)、ASP.NET(网络应用开发)和Win Forms(Windows编程)。 8. **程序设计过程**: - **问题建模**:...
本次实训的主要目的是让学生掌握C#中的类设计与操作,巩固课堂所学理论知识,如面向对象编程、命名空间、程序集和文件的使用。通过实训,学生能够将理论知识与实际编程相结合,理解并熟练运用C#的面向对象特性,提升...
1. **C#基础语法**:C#的基本结构包括变量、数据类型、常量、运算符等。变量用于存储数据,数据类型决定了变量可以存储的数据种类。运算符则用于处理这些数据,如算术运算符(+,-,*,/)和逻辑运算符(&&,||,!)...
1. **C#基础**: - 变量与数据类型:C#支持多种数据类型,包括整型、浮点型、字符型、布尔型等,还有引用类型如类、接口、数组。 - 控制流:如条件语句(if-else)、循环(for、while、do-while)和开关语句...
3. **泛型**:泛型在.NET中的应用,如泛型类、泛型方法和泛型接口。了解约束条件和泛型委托。 4. **异常处理**:如何使用try-catch-finally语句块进行异常处理,理解不同类型的系统异常,如FileNotFoundException、...
这些概念是理解和运用C# 6.0不可或缺的基础知识。例如: 类型:是数据的蓝图,是定义值和变量的集合以及操作这些值的方法。 变量:是存储数据的容器,它们具有类型和一个名称。 转换:允许将值从一种类型转换为另...
在这里,你可以找到关于C#的基础语法、控制结构、类与对象、异常处理、文件操作、网络编程等方面的详尽资料。对于初学者,这是一个非常宝贵的资源,能够帮助快速上手C#编程。同时,W3CSchool还提供了代码示例和在线...
《C#从入门到精通(第3版)》是由明日科技出版的一本关于C#编程语言的教材,该书以PDF...对于初学者来说,建议跟随书中的实例和练习逐步掌握基础知识,而对于高级读者,则可以跳过基础部分,专注于自己感兴趣的高级主题。
以上仅为《C# in depth要点整理》部分内容概述,文档中还可能包含更多细节和实践示例,对于想要深入理解C#的开发者来说,这份资料无疑是一份宝贵的参考资料。通过学习这些知识点,开发者能够更好地应对复杂的编程...