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#基础知识 c #基础知识 c#基础知识
C#基础知识:入门与提高的最佳资料! 主要介绍了C#语言基础、Windows编程的基础知识、常用控件和类的使用等!
C#基础知识C#基础知识C#基础知识C#基础知识
C#基础知识思维导图(整理版),较之前的版本,进行了一些整理
对于已经有C#开发知识的研发人员的基础知识进行巩固,比较好的全面过滤。
C#基础知识C#基础知识C#基础知识C#基础知识
01c#基础知识 02c#入门 03编写c#表达式
提供C#基础知识的系统整理,应对期末考试有帮助。
c#基础知识点大全,分条总结。另附winform,css,HTML知识点
C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言基础知识点大全分享C#语言...
开发语言:C# 参考网络上流传的《勇者斗恶龙》游戏源码制作的一个射击类游戏,借用了《勇者斗恶龙》的游戏界面及部分源码。 整个游戏框架已基本完成,源码中采用了一些设计模式,有精美的游戏画面和详尽的代码注释,...
c# 基础知识中的一些小知识点,如REF,OUT关键字,类型推断等等。
这是本人整理的C#基础知识,里面包含有C#基本概念,正式的语法规则,知识点总结调理清晰,麻烦各位看看...
数据结构 c#的实现 包括了 算法、线性表、 栈和队列、串和数组、数和二叉树、 图、 排序、 是很好的基础技术资料
C#基础知识集锦:里面包含了C#的所有基础知识结构,对C#基础知识进行了比较全面的总结
c#开发必备基础知识,包括C#字符串和正则表达式参考手册,C#完全手册,C# 语言规范
C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc C#基础知识.doc
如题,C#的Demo项目:RabbitMQ封装和使用, 引用了RabbitMQ.Client 版本:3.6.9 RabbitMQ .NET客户端操作类库, 并简单展示了3种Exchange的使用
很不错的C#基础类例子,看了后就想到把他们贡献出来了
C#常用知识整理