C# 允许把类和函数声明为abstract。 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体。显然抽象函数本身也是虚拟的Virtual
(只有函数定义 没有函数体实现)
类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。
当一个类出现抽象方法时,这个类也必须定义成抽象类。
继承一个抽象类的时候 ,必须实现抽象方法给出函数体。
不能用抽象类去构造实例化,但是可以用抽象类去声明,然后用子类去实力化
Bird bird =new Cow(); 父类声明 子类实力化
abstract class Bui{
punlic avstract decimal CalculateHeatingCost();
_______________________泛型类的定义31
泛型是 通过参数化类型来实现同一份代码上操作多种数据类型,利用参数化类型 将类型抽象化,从而实现灵活的复用。
当使用的时候构造确定<类型>, var o1=new Class
class ClassA
private T a;
private T b;
public ClassA(T a, T b)
this.a=a; this.b= b;
}
——————————————————————————————————
泛型方法
泛型方法也是在初始化的时候确定类型。
public static T GetSun
return a+""+b;
}
GetSum
______
public static string GetSum
{
return a+""+b;
}
————————————————————————————
如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字声明)
verrride 是重写 旧的方法就没了
new 是使父类的方法隐藏了,但是还在
隐藏方法容易引起调用的混乱 ,不知道是父类的还是子类的方法,所以很少用
class MyBaseClass{
public int MyMethod(){
}
}
派生类中
class MYDerivedClass:MyBaeClass{
public new void MyMethod(){
}
}