抽象类 泛型类的定义31 泛型方法 隐藏方法

         C# 允许把类和函数声明为abstract。 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体。显然抽象函数本身也是虚拟的Virtual

(只有函数定义 没有函数体实现)

    类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。

   当一个类出现抽象方法时,这个类也必须定义成抽象类。

    继承一个抽象类的时候 ,必须实现抽象方法给出函数体。

    不能用抽象类去构造实例化,但是可以用抽象类去声明,然后用子类去实力化

             Bird bird =new Cow();   父类声明 子类实力化


abstract class Bui{

                     punlic avstract decimal CalculateHeatingCost();

_______________________泛型类的定义31

    泛型是 通过参数化类型来实现同一份代码上操作多种数据类型,利用参数化类型 将类型抽象化,从而实现灵活的复用。

    当使用的时候构造确定<类型>,  var o1=new Class(21,34); 

      class ClassA{

                  private T a;

                  private T b;

          public ClassA(T a, T b)

             this.a=a; this.b= b;


}

——————————————————————————————————

泛型方法  

  泛型方法也是在初始化的时候确定类型。

      public static T GetSun(T a,T b){

                          return a+""+b;

     }

     GetSum(23,12);

______

     public static string GetSum(T a,T b)  可以定义多个泛型参数,泛型类也同样可以使用多个变量

   {

    return a+""+b;

   }




 ————————————————————————————

如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字声明)

verrride  是重写 旧的方法就没了

new  是使父类的方法隐藏了,但是还在

隐藏方法容易引起调用的混乱 ,不知道是父类的还是子类的方法,所以很少用

class MyBaseClass{

                   public int MyMethod(){

                      }

}

派生类中

    class MYDerivedClass:MyBaeClass{

                           public new void MyMethod(){

                            }

}


     

你可能感兴趣的:(抽象类 泛型类的定义31 泛型方法 隐藏方法)