c#抽象类、静态类与单例模式

抽象类

一、抽象方法

  • 抽象方法的声明:[访问修饰符] abstruct 返回值类型 方法名(参数列表);
  • 抽象方法必须放在抽象类里,class前面要加修饰符abstract
  • 抽象方法没有方法体,格式就为:[访问修饰符] abstruct 返回值类型 方法名(参数列表);
  • 抽象⽅法的访问修饰符不能是private,因为private不允许继承,抽象方法必须在⼦类中全部实现,除⾮⼦类也是⼀个抽象类,那么可以先不实现该抽象⽅法
  • 抽象⽅法和虚⽅法最⼤的区别:抽象⽅法必须其派⽣类中得以实现,⽽虚⽅法不是⼀定要在其派⽣类去重写
  • ⽆论是虚⽅法还是抽象⽅法,⼦类进⾏了重写(实现),那么⼦类的⼦类依旧可以继续重写

二、抽象类

  • 抽象类即可以放抽象⽅法,也可以放普通⽅法
  • 从抽象类派生的非抽象类必须实现抽象类当中的所有抽象方法
  • 抽象类不能被实例化但可以有构造方法,构造方法不能为抽象方法
  • 抽象类不能⽤sealed关键词修饰

三、sealed关键词

1.密封类

  • sealed关键词修饰的类称之为密封类
  • 语法:sealed class 类名
  • 密封类不能被别的类继承

2.密封⽅法

  • sealed关键词修饰的重写的⽅法,称之为密封⽅法
  • 语法:sealed override 返回值类型 ⽅法名(参数列表)
  • 密封⽅法⽆法再次被其⼦类重写

静态类

  • 关键词:static

一、静态成员

  • 静态成员变量是和类相关联的,可以作为类中“共”有的变量(是一个共性的表现)
  • 静态成员不依赖特定对象的存在,访问的时候通过类来操作的
  • 静态成员在第⼀次访问这个类的时候(第⼀次⽤到这个类的时候)开辟的内存,比如⽤这个类名去实例化⼀个对象时,⽤这个类型去访问⼀个静态字段时
  • 静态成员在程序结束的时候才会释放内存
  • 静态成员随着类的加载而加载,无论对一个类创建多少个实例,静态成员都只有一个副本。普通的实例成员,每有⼀个对象,就有⼀个该成员,⽽静态成员,跟对象没有关系,所以⽆论有多少个对象,静态成员都只有⼀个。例: 实例成员【name】,每有⼀个⼈,就会有对应的⼀个名字,⽽静态成员【Population】,跟对象没有关系,⽆论有多少个实例对象,⼈⼝数量只有⼀个
  • 静态方法可以被重载但不能被重写,因为他们是属于类,不属于任何实例的
  • 静态方法只能访问静态成员,包括静态成员变量和静态方法,⾮静态⽅法中是可以访问静态成员的;实例方法可以访问实例成员变量与实例方法,也可以访问静态成员

二、静态类

  • 静态的成员可以放在静态类中,也可以放在⾮静态类中
  • 静态类中只能存在静态成员,不能存在⾮静态的成员
  • 静态类是不能进⾏实例化的

三、静态构造函数

  • 只有一种写法:static 类名()
  • 静态构造函数是固定格式,不能有修饰符,不能带任何参数
  • 一个类只能有一个静态构造函数,即静态构造函数不可以重载
  • 静态构造函数在程序运⾏期间只会执⾏⼀次,就是在第⼀次访问该类的时候执行,如:⽤这个类去new⼀个对象、⽤这个类去访问某个静态成员、⽤这个类去调⽤某个静态⽅法
  • 如果有继承关系,静态构造函数的执⾏顺序是:先执⾏⼦类的静态构造,再执⾏⽗类的静态构造
  • 静态构造函数⼀般⽤于对静态成员进⾏初始化

单例模式

  • 设计模式:设计模式是指前任反复设计实践,总结出来的代码架构设计思路或模式,常用的设计模式有单例模式,工厂模式,代理模式等
  • 对于系统中的某些类来说,只有一个实例很重要。例如:一个游戏数据内容,整个游戏只有这么一份,在游戏进行到不同部分时,需要记录或访问该游戏数据。针对这种情况如果某个类只能有一个实例那么则满足我们的需求,我们将满足某个类只有一个实例的代码设计方式称为单例模式
  • 单例模式的三要点:某个类只能有一个实例、必须自行创建这个实例、必须自行向外界提供这个实例
  • 单例模式实现步骤:默认构造使用private修饰、内建该类的静态实例、静态构造方法中给该静态实例做初始化、对外提供获取该静态实例的方法
public class SingleTon
{
    private SingleTon() { } //构造方法必须私有化
    private static SingleTon instance; //定义静态实例
    public static SingleTon GetInstance()
    {
        //对外提供获取该实例的接口
        if (instance == null)
        {
            instance = new SingleTon();
        }
        return instance;
    }
} 
  • 单例模式的使用
SingleTon singleton = SingleTon.GetInstance();
Console.WriteLine(singleton.name); 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值