抽象类 泛型类的定义31 泛型方法 隐藏方法
2016-06-21 08:54
211 查看
C# 允许把类和函数声明为abstract。 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体。显然抽象函数本身也是虚拟的Virtual
(只有函数定义 没有函数体实现)
类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。
当一个类出现抽象方法时,这个类也必须定义成抽象类。
继承一个抽象类的时候 ,必须实现抽象方法给出函数体。
不能用抽象类去构造实例化,但是可以用抽象类去声明,然后用子类去实力化
Bird bird =new Cow(); 父类声明 子类实力化
abstract class Bui{
punlic avstract decimal CalculateHeatingCost();
_______________________泛型类的定义31
泛型是 通过参数化类型来实现同一份代码上操作多种数据类型,利用参数化类型 将类型抽象化,从而实现灵活的复用。
当使用的时候构造确定<类型>, var o1=new Class<int>(21,34);
class ClassA<T>{
private T a;
private T b;
public ClassA(T a, T b)
this.a=a; this.b= b;
}
——————————————————————————————————
泛型方法
泛型方法也是在初始化的时候确定类型。
public static T GetSun<T>(T a,T b){
return a+""+b;
}
GetSum<int>(23,12);
______
public static string GetSum<T,T1,T2>(T a,T b) 可以定义多个泛型参数,泛型类也同样可以使用多个变量
{
return a+""+b;
}
————————————————————————————
如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字声明)
verrride 是重写 旧的方法就没了
new 是使父类的方法隐藏了,但是还在
隐藏方法容易引起调用的混乱 ,不知道是父类的还是子类的方法,所以很少用
class MyBaseClass{
public int MyMethod(){
}
}
派生类中
class MYDerivedClass:MyBaeClass{
public new void MyMethod(){
}
}
(只有函数定义 没有函数体实现)
类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。
当一个类出现抽象方法时,这个类也必须定义成抽象类。
继承一个抽象类的时候 ,必须实现抽象方法给出函数体。
不能用抽象类去构造实例化,但是可以用抽象类去声明,然后用子类去实力化
Bird bird =new Cow(); 父类声明 子类实力化
abstract class Bui{
punlic avstract decimal CalculateHeatingCost();
_______________________泛型类的定义31
泛型是 通过参数化类型来实现同一份代码上操作多种数据类型,利用参数化类型 将类型抽象化,从而实现灵活的复用。
当使用的时候构造确定<类型>, var o1=new Class<int>(21,34);
class ClassA<T>{
private T a;
private T b;
public ClassA(T a, T b)
this.a=a; this.b= b;
}
——————————————————————————————————
泛型方法
泛型方法也是在初始化的时候确定类型。
public static T GetSun<T>(T a,T b){
return a+""+b;
}
GetSum<int>(23,12);
______
public static string GetSum<T,T1,T2>(T a,T b) 可以定义多个泛型参数,泛型类也同样可以使用多个变量
{
return a+""+b;
}
————————————————————————————
如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字声明)
verrride 是重写 旧的方法就没了
new 是使父类的方法隐藏了,但是还在
隐藏方法容易引起调用的混乱 ,不知道是父类的还是子类的方法,所以很少用
class MyBaseClass{
public int MyMethod(){
}
}
派生类中
class MYDerivedClass:MyBaeClass{
public new void MyMethod(){
}
}
相关文章推荐
- 在Java中如何使用transient
- XCode7打包上传报错
- POI——CTPhoneticRun异常解决
- Springmvc与MyBatis的整合(一)
- iOS计算缓存内容大小
- ThinkPHP框架之模型
- 勾股定理一日一证连载29
- 使用SOAP的XML消息传递
- Spring 4.3 的新功能和增强
- Linux学习(1)之VMware-workstation的安装
- 使用Cordova来解决HTML5制作的WebView手机不兼容的问题
- C# note
- java 十进制整数转换为二进制!
- 1030 - Discovering Gold
- 关于WINUSB
- 出现( linker command failed with exit code 1)错误总结
- 5.每颗继承树两张表:总结
- 4.每颗继承树两张表:测试
- 3.每颗继承树两张表:hibernate.cfg.xml
- 搭建直播系统