C#继承

C#的继承与 C++ 等语言一个重要的不同,就是只能从一个类中继承,这是开发者在权衡了从多个类C#继承的优势与劣势作出的结果。不过,可以从接口继承。另外,继承可传递。构造函数和析构函数不能被继承。

初始化基类

可以在派生类构造函数中添加初始化基类的代码。

 

ExpandedBlockStart.gif 代码
public   class  BaseClass  
{      
  
private   int  i  =   0 ;            
  
public  BaseClass( int  index)     
  {          
      i 
=  index;     
  }  
}    
public   class  DerivedClass : BaseClass  
{      
   
private   int  j  =   0 ;            
   
public  DerivedClass( int  index) :  base (index)      
   {          
     j 
=  index;      
   }  

 

 

 
 
  1. 注意派生类构造函数中的 : base(index)。将先调用基类的构造函数。

另外,相对于 this,要访问基类的成员,可以使用 base,当前这不能用在静态方法中,因为静态方法没有实例。

C#继承中的重写

◆virtual 用在基类中,指定一个虚方法(属性),表示这个方法(属性)可以重写。

◆override 用在派生类中,表示对基类虚方法(属性)的重写。

以上的基类和派生类都是相对的。B 是 C 的基类,也可以是 A 的派生类,B 中既可以对 A 中的 virtual 虚方法用 override 重写,也可以指定 virtual 虚方法供 C 重写。

不能重写非虚方法或静态方法。重写的基方法必须是 virtual、abstract 或 override 的。为什么 override 也可以重写呢?因为基类中的 override 实际上是对基类的基类进行的重写,由于继承可传递,所以也可以对基类中 override 的方法进行重写。

◆override 声明不能更改 virtual 方法的可访问性。override 方法和 virtual 方法必须具有相同的访问级别修饰符。
不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。

◆重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtual、abstract 或 override 的。

 

ExpandedBlockStart.gif 代码
public   class  BaseClass  
{      
  
public   virtual   string  GetString()      
  {          
     
return   " 这是一个虚方法。 " ;     
  }  
}    
public   class  DerivedClass : BaseClass  
{      
   
public   override   string  GetString()      
   {          
     
return   " 这是重写了的方法。 " ;      
   }  

 

可以看出,重写与前面讲的重载是有区别的。

C#继承中的方法重载

方法重载并不是类继承中的内容,只是它容易和重写等混淆,所以放在一起谈谈。

什么是重载呢,举个例子,我们在应用 System.IO.File.Create() 方法时,往往可以选择几种参数,这是就方法的重载,同一个作用域、同一个方法名称、具有不同的参数类型或参数个数,在调用方法时,根据参数自动决定使用哪一个方法。

示例

public   string  GetString()  
{      
// ...  
}   
public   string  GetString( int  index)  
{      
// ...  
}   
public   string  GetString( string  userName)  
{      
// ...  
}  

 

在C#中,方法参数没有默认值,可通过重载来实现默认值功能。

转载于:https://www.cnblogs.com/arongbest/archive/2010/03/29/1699595.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值