.1 静态方法
.1.1 特点:
生命周期:自创建开始到整个应用程序结束而结束
作用域:全局
效率高
.1.2 应用:
用户登录信息、系统配置信息、系统设置、SQLHelper
.1.3 注意事项:
带有“静态”前缀的一旦数量变多就会大量占用内存,非必要情况下不要创建静态对象
.1.4 调用:
我们在静态函数中调用某个方法时,
如果调用的是非静态方法,则需要在调用时先将该类实例化一个对象(或者说把该类初始化),再通过对象调用该方法——间接调用;
而调用静态方法则无需实例化对象,直接通过方法所属类调用即可——直接调用;
如果调用者和被调用者都定义在同一个类下,直接调用该方法即可。
.2 构造方法
.2.1 特点:
就像名字一样,有什么需要就怎么去构造,方法就像个橡皮泥,想捏什么就怎么捏,突出一个“自定义”
.2.2 应用:
初始化对象
(定义一个对象包含哪些属性字段,这下字段分别又是什么数据类型;创建对象的意义:计算机实现对数据的读写前提是在内存中有相应的数据,通过初始化我们才可以在内存中为该数据开辟一个专属空间),
或者初始化一些数据
.2.3 注意事项:
构造方法默认为一个无参方法
可以自定义达到多个参数、方法重载的需要
.3 析构方法(了解)
.3.1 特点:
一般被GC垃圾回收器调用来释放对象,相比较构造方法是在创建时调用,析构方法是在程序结束时调用
.3.2 应用:
释放对象
.3.3 补充:垃圾回收机制
垃圾回收机制就是在程序结束时对运行中调用的资源进行处理,防止程序结束后对内存仍存在不必要的占用
这些资源分为托管资源和非托管资源两种
托管资源即不需要我们去管理,用完系统自动回收(这部分资源由我们拜托计算机自己来管理了);而非托管资源则需要我们手动处理后续
非托管资源包含:
Windows窗口句柄、数据库链接、GDI对象、独占文件锁等对象
Context,ApplicationContext,Brush,Component,ComponentDesigner,Container,Cursor
FileStream,Font,Icon,Image,Matrix,Object,OdbcDataReader,OleDBDataReader,Pen
Regex,Socket,StreamWriter,Tooltip等
.3.4 调用:
方式1 语法糖
方式2 经典方法
.4 虚方法(修饰符 virtual)与重写方法(修饰符 override,注意不是overload,overload是重载,允许同名方法有多种参数列表类型)
.4.1 特点:
在不改动原始方法的情况下实现新的功能;
维护方便(想用基类的原始方法就直接继承,想用新功能就重写)
.4.2 应用:
允许子类(派生类)对从父类(基类)中继承的方法进行重写,从而实现同名方法但不同的功能
.4.3 实现:
未用virtual修饰的常规方法,这里用面向整数的加法举例
用virtual修饰后,在子类中override重写从父类中继承来的同名方法(从而实现同名但不同功能,如果只需要继承原本功能就不需要重写)
.5 抽象方法(修饰符 abstract)
.5.1 特点:
必须在抽象类里声明;
不带方法体(因此没有具体功能,只规定了包含参数列表和返回值类型的函数签名);”画饼“
抽象类中声明的抽象方法无法直接被实例化(new不了),后续调用时实例化乃至实现的方法都是在子类中重写的具体方法
.5.2 应用:
强制性、必须实现的需求场景
.5.3 实现:
注意,跟前面的方法调用前先实例化对象有所区别,在调用抽象类下子类的方法时,不需要也无法对抽象类进行实例化,直接对子类进行实例化
.5.4 补充:与接口的区分
接口的实现:
看上去好像接口和抽象类非常接近,但仍需做好对各自使用场合的区分:
区别1:
抽象类,属于类,向上单继承(即只会有一个父类)
接口可以多继承
因此在上面的接口示例中可以通过再声明其他三个接口,一次性继承四个接口来实现加减乘除
继承四个接口的接口子类
调用
区别2:
虚方法、普通方法在抽象类中可以声明,在接口中只能声明规范,具体的实现不能写
在抽象类中
在接口中
综上,抽象类和接口各自的应用场合:
抽象类适用于常用的、不经常改动的、抽象性较强的事件(人的性别)
接口适用于改动性比较频繁、规范性质明显的事件(人的行为动作),一旦调用就必须实现接口否则会报错
.7 扩展方法
.7.1 特点:
在非泛型的静态类中定义的静态方法
.7.2 应用:
开发中第三方密封类没有源码的情况下开发者无法使用继承,而原有功能又无法实现需求时,可以同过扩展实现需求;
扩展接口;
LINQ链式编程
.7.3 实现
应用1
应用2
这种途径相当于,建立了一个自己的方法库(包含了接口本身的方法和扩展类里我们新建的方法),以接口作为中介达到对库内的方法进行按需调用
标签:调用,C#,子类,接口,学习,--,对象,抽象类,方法 From: https://www.cnblogs.com/90Red/p/17282244.html