zoukankan      html  css  js  c++  java
  • C#学习笔记(类的继承、重写)

    1 隐藏基类的方法

      当基类继承一个(非抽象的)成员时,也就继承了其实现代码。如果继承的成员是虚拟的,就可以用override关键字重写这段实现代码。无论继承的成员是否为虚拟,都可以隐藏这些代码。

      使用下面的代码就可以隐藏:

    public class MyBaseClass

    {

      public void DoSomething()

      {

        //Base implementation.

      }

      public class MyDerivedClass : MyClass

      {

        public void DoSomething()

        {

          //Derived class implementation, hide base implementation.

        }

      }

    }

      尽管这段代码可以正常运行,三十会产生一个警告,说明隐藏了一个基类成员。如果是无意间隐藏了一个需要使用的成员,此时就可以改正错误。如果确实要隐藏该成员,就可以使用new关键字显式的表明意图:

    public class MyDerivedClass : MyBaseClass

    {

      new public void DoSomething()

      {

        //Derived class implementation,hide base implementation.

      }

    }

      其工作方式是完全相同的,但是不会出现警告。此时应该注意隐藏基类成员和重写他们的区别。考虑下面的代码:

    public class MyBaseClass

    {

      public vritual void DoSometing()

      {

        Console.WriteLine("Base imp");

      }

    }

    public class MyDerivedClass : MyBaseClass

    {

      public override void DoSomething()

      {

        Console.WriteLine("Derived imp");

      }

    }

    实现如下:
    MyDerivedClass myObj = new MyDerivedClass();

    MyBaseClass myBaseObj;

    myBaseObj = myObj;

    myBaseObj.DoSomething();

    输出结果:

    Derived imp

    2 this关键字

      与base关键字一样,this也可以用在类成员的内部,且该关键字也引用对象实例。只是this引用的是当前的对象实例(即不在静态成员中使用this关键字,因为静态成员不是对象实例的一部分)。

      this关机那字最常用的功能就是把当前对象实例的引用传递给一个方法。

      this关键字的另一个常见的用法就是限定本地类型的成员,例如:

    public class MyClass

    {

      private int someData;

      public int SomeData

      {

        get

        {

          return this.someData;

        }

      }

    }

  • 相关阅读:
    千年决心
    编译器及其命令行模式杂谈
    How Microsoft Lost the API War
    再看计算机本科该如何学习
    C++杂记(一)
    C++杂记
    Java IO 学习心得
    VMDq (Virtual Machine Device Queue) in OpenSolaris
    WCHAR and wchar_t 的区别 (zz)
    error C3225: generic type argument for 'T' cannot be 'System::Collections::Generic::KeyValuePair ^',
  • 原文地址:https://www.cnblogs.com/DannyShi/p/4475826.html
Copyright © 2011-2022 走看看