数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引
标签:
C# 基础接口篇一、多态复习
使用个new来实现,使用virtual与override
--》new隐藏父类方法 根据当前类型,电泳对应的方法(成员)
--》override重写 无论什么情况,都是执行新的方法(成员)
继承是实现多态的一个前提,没有继承多态是不能实现的
父类与子类实现多态
抽象类与子类实现
抽象类不能实例化
抽象类中的抽象方法没有方法体
抽象类的成员有哪些
-》包含非抽象成员
-》不能实例化
-》子类必须实现父类的 抽象方法,除非子类也是抽象类
抽象成员有哪些呢?(凡是与方法有关的都可以抽象)
方法、属性、索引、事件
自动属性与抽象属性
这个字段只需要实现读和写的功能不需要其他控制的时候就可以使用自动属性
二、接口
1)接口的关键字:interface
2)接口的命名以I开头
3)成员符没有访问修饰符
4)没有方法实现体
5)接口里的成员必须是抽象的
6)接口定义能力即方法 派生类必须实现接口方法,除了抽象类
7)接口的存在就是为了实现多态
8)继承可以解决继承体积庞大的其问题,比如说有一个算法类里面有很多功能很齐全的计算方法,我现在要实现1+1=2的计算,此时如果调用这个功能齐全的类库来实现,那么无疑使大材小用了
也会产生很多的冗余代码,那么就可以考虑用接口来实现,接口的单一原则,接口实现的功能越少越好,一般一个接口实现一个功能,一般接口里面不要超过两个方法
接口可以实现多继承:
语法:
[public] [static] class 类名:[基类名,][[接口名,]接口名....]
接口比抽象类还抽象,接口是对功能的抽象
显示实现接口:
-》为了避免接口的方法名相同
-》显式实现接口必须由接口类型调用
显示实现接口的方法不能一public修饰,方法名以接口名.方法名
interface IInterface1 { void Func(); } interface IInterface2 { void Func(); } class MyTest : IInterface1, IInterface2 { void IInterface1.Func() { Console.WriteLine("我是IInterface1提供的Func"); } void IInterface2.Func() { Console.WriteLine("我是IInterface2提供的Func"); } }
添加代码段
C# 值类型_引用类型篇三、值类型、引用类型
值类型就“复制文件”
-》值类型来源于Vluar Type
引用类型就是“复制快捷方式”
->引用类型来源于object
使用ref与out都可以将参数传入方法,并保留在方法中对参数赋值时的影响
即参数在方法中被修改了,方法结束后,结果仍然保留方法中最后那一次被修改的值
ref reference 引用方法中用的是变量的引用,就是快捷方式
Out 参数用来输出,即在方法中对变量的修改就是要传到外边输出的
ref 在使用前要赋值
out 在方法中使用前要赋值
static void Main(string[] args) { int num = 0; Func1(ref num); int num1; Func2(out num1); } static void Func1(ref int n) { n = 10; } static void Func2(out int n) { n = 10; }
C# 静态与非静态篇三、静态与非静态
static修饰的成员就做静态成员
静态成员作用于整个应用程序
-》在程序里那里都可以调用它
如何定义静态成员?
-》加static修饰
静态成员与实例成员调用关系?
-》静态方法、静态类中不要允许直接调用静态成员,如果要调用必须要new对象由对象来调用
如何调用静态成员?
-》类名.成员名
静态成员属于整个类
实例成员属于对象
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67665.html