C#学习笔记之——抽象类、静态类和单例
来源:互联网 发布:软通动力招聘java 编辑:程序博客网 时间:2024/06/05 18:10
一、抽象方法
抽象方法是一种特殊的虚方法,它只起声明作用,所以只加“ ; ”号,一定不能带实现。用抽象方法就是因为在类中可以不用实现的时候,没必要写一个虚方法。
抽象方法要用abstract修饰。访问修饰符不能用private!
二、抽象类
有抽象方法的类一定是在抽象类中。但是在抽象类中不一定要有抽象方法。同样的也是用abstract修饰符。
抽象类不能被实例化。
抽象类可以写虚方法,可以写方法,可以写构造方法,抽象类的虚方法还可以调用抽象方法,不会报错,主要是不能被实例化,其它与普通类没有大的区别。
被继承的具体类一定要实现抽象类中所有的抽象方法。所以这句话的另一层含义就是如果继承一个抽象类A的还是一个抽象类B,那么抽象类B可以实现父类A中的抽象方法,也可以不实现父类A中的抽象方法。但是最终还是有一个具体类实现它父类中所以没有被实现的抽象方法。
抽象方法和虚方法的区别:
1、抽象方法一定不能有实现,写的时候就只有一个声明,而虚方法一定要有实现,也就是要有写的方法体。
2、抽象方法被具体类继承后一定要重写,但是虚方法可以不用重写。
3、抽象方法是一种特殊的虚方法,如果一个类要有抽象方法,那么它一定是抽象类,所以抽象方法必须是在抽象类中才能写的。而虚方法没有类的要求。
public abstract class Test1{//抽象方法public abstract void Function1();}public abstract class Test2 : Test1{public override void Function1 (){Console.WriteLine ("2");}public abstract void Function2 ();}public class Test3 : Test2{public override void Function1 (){base.Function1 ();}public override void Function2 (){Console.WriteLine ("3");}}
三、抽象属性
namespace Lesson12_13{public abstract class Ball{protected string brand;//抽象属性public abstract string Brand{ set; get; }//抽象方法public abstract void Play ();public abstract void Size ();public abstract void HowToPlay ();}public class Basketball : Ball{
public override string Brand { //实现get {return brand;}set {brand = value;}}public override void Play (){Console.WriteLine ("play basketball");}public override void Size (){Console.WriteLine ("medium");}public override void HowToPlay (){Console.WriteLine ("by hands");}}public class Soccer : Ball{public override string Brand { //实现get {return brand;}set {brand = value;}}public override void Play (){Console.WriteLine ("play soccer");}public override void Size (){Console.WriteLine ("medium");}public override void HowToPlay (){Console.WriteLine ("by foot");}public void Play (int a) { //重载}}}
如果抽象属性只有set那么属性的实现也只能有set,不能写get,相应的只有get也是一样的。
四、静态成员
用static修饰的成员称为静态成员。
静态成员只能由类来调用。普通的方法和字段是对象来调用的。
五、静态类
静态类不能实例化,不包含非静态成员,不能被继承。可以把静态类看做一个工具类,它不需要实例,只要需要,都可以调用该类成员。
静态类的特点:
1、仅包含静态成员和const修饰的常量
2、不能被实例化
3、是密封的(默认sealed,不能再用sealed修饰),也就是说不能被继承
4、有静态构造方法,但静态构造方法必须是无参数的
六、静态构造方法
静态构造方法用于初始化静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造方法。
不能带访问修饰符,不能带参数,不能重载!
七、单例设计模式
单例设计模式就是确保一个类只有一个实例。之所以要单例模式是因为单例模式是资源管理的必备模式,保证一个类只有一个实例,并且这个实例易于被访问。
单例简单设计模式的关键是:
1、建立私有静态实例
2、私有构造方法
3、公有静态属性
其余和普通类一样
阅读全文
1 0
- C#学习笔记之——抽象类、静态类和单例
- java学习笔记之—接口和抽象类
- C#学习之抽象类和方法
- C#学习之接口和抽象类
- 1.11 C# 静态类和单例
- c#学习笔记——抽象类、抽象方法、抽象属性
- c#学习笔记——抽象类、抽象方法、抽象属性
- C#中的抽象类和静态类
- C#之抽象类和抽象方法
- 黑马程序员之C# 学习笔记:抽象类和接口的区别
- 黑马程序员之C#学习笔记: 抽象类总结
- C#学习笔记之多态之抽象类
- [php学习笔记]工厂模式,单例模式、抽象类
- C#学习笔记(三):抽象类和接口
- C# 学习笔记 -- 抽象类和多态
- c#学习笔记七 接口和抽象类对比
- C#学习笔记13-抽象类和接口
- c#学习笔记之单例
- maven仓库影像用阿里的吧,快就一个字,我只说一次。
- RecyclerView多条目
- 关于CentOS7 可以ping通 但是telnet无法连接上端口的问题
- Java中的位运算,包括移位、位与、或、异或、非
- spark sql 中的细节,判断字段是否为null
- C#学习笔记之——抽象类、静态类和单例
- OpenGL——理解HDR与Bloom
- 12 papers to understand QA system with Deep Learning
- FAQ宝典之Rancher Server、K8s、Docker
- Java实现各种文件转PDF(使用OpenOffice)
- 第14周项目1(4)- 验证算法 快速排序
- 如何把镜像站的资源弄到本地
- windows系统 安装OpenOffice(office文档转成PDF文件)
- 拼命努力