c# learing(1)

abstract 当一个类中含有抽象方法时,那么这个类就是抽象类,不可被实例化,只能被继承,他的子类必须实现抽象方法的函数体(override)。\
new 和 virtual/override 的区别 :
new :
1.基类的引用指向派生类的实例,调用基类的方法;
2.派生类的引用指向派生类的实例,调用派生类的方法;
virtual/override :
1.基类的引用指向派生类的实例,调用派生类的方法;
2.派生类的引用指向派生类的实例,调用派生类的方法;
sealed密封类和方法,防止派生类对其进行修改

接口
1、接口就是制定一组函数成员,而不实现他们的引用类型,用interface声明。接口函数不能用其他访问修饰符修饰,默认为public。
2、接口用来被实现
例如Cat:ICatchMice{
//实现接口函数
}
3、一个类可以实现多个接口,当一个类同时继承基类和实现接口时,应该将基类写在最前面,用逗号隔开
4、一个类实现接口时,必须实现接口声明的函数。
5、可以通过接口引用调用接口中的方法,也可通过实例调用接口方法。例子
爬树为一个接口,抓老鼠为一个接口,当猫这个类实现这两个接口时,
Cat c=new Cat("tom");
爬树 ci=(爬树)c;
c.pashu();//通过实例调用接口方法
ci.pashu();//通过接口引用调用接口方法

结构(struct)和类(class)
使用场合
结构:用于分配内存块,作用域结束即被删除,不需要垃圾回收,用于小型数据结构。传递过程中会复制,应该使用ref提高效率
类:用于其他的需要继承体系的场合

静态构造函数
用来初始化对象的静态成员
静态构造函数属于静态方法,静态方法只能访问静态成员
静态函数不能访问实例成员,但实例成员可以访问静态成员,仅能访问其他静态成员【而这些静态成员在被访问前已经被初始化好了】

1、静态类
包含静态属性和方法,被标记为static
静态类不能创建实例,不能被继承。
可以为静态类定义静态构造函数。
2、作用
主要用于基础类库(math类)和扩展方法。
3、如何扩展方法
若有源代码,直接添加一个新方法
如果不能修改单也不是密闭类,可以派生子类扩展
如果以上条件不满足,可以使用静态类扩展方法
3、在静态类中的静态方法中参数中加入this关键,则可以直接利用对象调用方法就可以。
4、总结扩展要求
扩展方法所属的类,必须是static类
扩展方法本身就是static方法
扩展方法的第一个参数类型,必须是this+类名。
例如:
Dog类没办法修改,修改Dog类就需要扩展方法,需要一个喂养宠物的方法
static class PetGuide//扩展Dog类的方法
{
static public void HowToFreedDog(this Dog dog)
{
Console.WriteLine("播放如何喂养一直狗狗的视频");
}
}
Dog dog=new Dog();//Dog类中没有HowToFreedDog();方法
dog.HowToFreedDog();//扩展之后好像Dog类中有这样的方法一样。

猜你喜欢

转载自www.cnblogs.com/abc3288288351/p/8947881.html