C#根本入门 六

时间:2021-12-04 05:19:30

C#根本入门 六 静态类进阶 静态结构要领

用于初始化任何静态数据,或用于执行仅需执行一次的特定操纵,在创建第一个实例或引用任何静态成员之前,将自动挪用静态结构函数,静态结构要领是无参数的。

public static class Tool { static int length; static void fun(){} static Tool() { Console.WriteLine("public Tool()");//静态类结构要领 } } 单例设计模式

单例设计模式就是确保一个类只有一个实例,单例模式是资源打点的必备模式,保证一个类只有一个实例并且这个实例易于被访谒。、

如何实现单例模式:

结构要领设为private

内建静态实例

静态结构要领给实例做初始化

public class Singleton { private static Singleton instance;//内建静态实例 private Singleton(){}//结构要领必需设为私有 public static Singleton Instance { get { return instance; } } } static Singleton(){ if (instance==null){ instance=new Singleton();//为实例初始化 }} 抽象类 操练

用我们学过的常识,实现下面布局关系:图13

C#根本入门 六

class Player { public virtual void Practice() { Console.WriteLine("player‘s practice"); } } class Footballplayer : Player { public override void Practice() { Console.WriteLine("footballplayer‘s practice"); } } class Swimmingplayer : Player { public override void Practice() { base.Practice(); Console.WriteLine("swimmingplayer‘s practice"); } } class MainClass { public static void Main(string[] args) { Player player = new Footballplayer(); player.Practice(); } }

在这个例子中可以发明,基类中的训练要领只是起到了声明的感化,要领内部的语句,在子类中没有用到,像这样的要领,称为抽象要领。

用abstract修饰的要领,称为抽象要领,抽象要领同时隐含虚要领,所以它不能再被virtual修饰。public abstract void Practice();

抽象要领是一种新的虚拟要领,它只起到声明感化,,所以只加一个";"号,必然不能带实现部分。

担任时实现具体的要领,也就是使用override重写。

abstract class Player { public abstract void Practice(); }

抽象类的用途:供给一个可供多个派生类共享的通用基类的界说。

抽象类独立于抽象要领,也就是说没有抽象要领,类也可以声明为抽象类,抽象类不能被直接实例化,其他跟普通类没有区别。

abstract class Animal { int age; void func(){ Console.WriteLine("Animal‘s function"); } } abstract public class Player { abstract public void Practice(); } public class Footballplayer : Player { public override void Practice() { Console.WriteLine("足球运带动在训练"); } } public static void Main(string[] args) { Footballplayer footballplayer =new Footballplayer(); footballplayer.Practice(); }

总结:

抽象要领只做声明,而不包罗实现,抽象要领旨在担任后实现,所以不能用private修饰;

抽象类不能被直接实例化;

抽象类可以没有抽象属性和抽象要领,但是一旦有了抽象要领,就必然要把这个类声明为抽象类;

如果抽象类的派生类不是抽象类,那么必需重写抽象类的所有抽象要领。

抽象要领和虚要领:

抽象要领必然不能有实现,虚要领必然要有实现;

抽象要领被具体类担任后,必然要被重写,虚要领可以不重写;

抽象要领是一种特殊的虚要领,一旦类中有抽象要领,则类必需声明为抽象类,抽象类中可以有虚要领。