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
在这个例子中可以发明,基类中的训练要领只是起到了声明的感化,要领内部的语句,在子类中没有用到,像这样的要领,称为抽象要领。
用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修饰;
抽象类不能被直接实例化;
抽象类可以没有抽象属性和抽象要领,但是一旦有了抽象要领,就必然要把这个类声明为抽象类;
如果抽象类的派生类不是抽象类,那么必需重写抽象类的所有抽象要领。
抽象要领和虚要领:
抽象要领必然不能有实现,虚要领必然要有实现;
抽象要领被具体类担任后,必然要被重写,虚要领可以不重写;
抽象要领是一种特殊的虚要领,一旦类中有抽象要领,则类必需声明为抽象类,抽象类中可以有虚要领。