轻松学习C#的方法

2019-12-30 11:06:54王振洲

       重写方法用相同的签名重写所继承的虚方法。虚方法声明用于引入新方法,而重写方法声明则用于使现有的继承虚方法专用化。用override声明所重写的那个方法称为已重写了的基方法。
        重写声明和已重写了的基方法具有相同的声明可访问性。换句话说,重写声明不能更改所对应的 虚方法的可访问性。但是,如果已重写的基方法是protected,并且声明它的程序集不是包含重写方法的程序集,则重写方法声明的可访问性必须是protected。
        重写override一般用于接口的实现和继承类的方法改写时应注意:
        (1)覆盖的方法的标志要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果
        (2)覆盖的方法的返回值必须和被覆盖的方法的返回值一致
        (3)覆盖的方法所抛出的异常必须和被覆盖的方法所抛出的异常一致,或者是其子类
        (4)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖
例三、创建一个虚方法并重写这个虚方法,通过调用两个方法比较结果


<span style="font-size:18px;">using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
  class A 
  { 
    public virtual void a()//创建的虚方法 
    { 
      Console.WriteLine("这是虚方法"); 
    } 
  } 
  class B : A 
  { 
    public override void a() 
    { 
      Console.WriteLine("这是重写后的方法"); 
</span>    } 
  } 
  <span style="font-size:18px;">class Program 
  { 
    static void Main(string[] args) 
    { 
      B b1 = new B();//创建类B的对象b1 
      b1.a();//调用重写后的a方法 
      A a1 = new A();//创建类A的对象a1 
      a1.a();//调用虚方法a 
      A a2 = b1;//将类B的对象b1赋值给类A的对象a2 
      a2.a();//调用虚方法a 
      Console.ReadLine(); 
    } 
  } 
} 
</span> 

输出的结果为:这是重写后的方法
                       这是虚方法
                       这是重写后的方法
四、外部方法(这个方法很新奇,联想到很多)
        当方法声明包含extern修饰符时,称该方法为外部方法。外部方法是在外部实现的,编程语言通常是使用C#以外的语言。外部方法不可以是泛型。