“多态”一个需要注意的问题

简介:
在C#中只有属性和方法能被声明为virtual,而字段则不能。因此注意下面例子中的问题。
  public class Base
  {
    public int i = 10;

    public virtual void Test()
    {
      Console.WriteLine(i);
    }
  }

  public class Deliver : Base
  {
    public int i = 20;

    public override void Test()
    {
      Console.WriteLine(i);
    }
  }

  public class Class1
  {
    public static void Main(string[] args)
    {
      Deliver d = new Deliver();
      Base b = d;

      d.Test(); // 20
      b.Test(); // 20

      Console.WriteLine(b.i); // 10 问题就出在这,字段i并不支持多态。
    }
  }
 
目录
相关文章
|
6月前
多态
对于方法而言 优先使 用子类方法 对于成 员变量而言 优先使用 父类变量 访问成员变量的两种方式: 1.直接通过对象名称访问成员变量,看等号左边是谁,优先用谁,没有向上寻找 2.间接通过成员方法访问成员变量,看该方法属于谁。优先用谁,没有向上寻找
24 0
|
2月前
|
存储 C++
C++:多态
C++:多态
28 0
|
9月前
多态你真的了解吗?
多态你真的了解吗?
44 0
|
9月前
什么是多态?
什么是多态?
39 0
|
4月前
|
编译器 C++
【C++】:多态
【C++】:多态
41 0
|
6月前
|
存储 设计模式 编译器
多态【C++】
多态【C++】
49 0
|
6月前
|
编译器 C++
|
6月前
|
大数据 编译器 C++
|
10月前
|
编译器 C++
【C++】非常重要的——多态(三)
【C++】非常重要的——多态
73 0