new 和 override 的区别

简介:
class A
  {
    public virtual void Test()
    {
      Console.WriteLine("A");
    }
  }
 
  class A1 : A
  {
    public override void Test()
    {
      Console.WriteLine("A1");
    }
  }
 
  class A2 : A
  {
    public new void Test()
    {
      Console.WriteLine("A2");
    }
  }
 
  class Test
  {
    static void Main(string[] args)
    {
      A a1 = new A1();
      A a2 = new A2();
 
      a1.Test();
      a2.Test();
      (a2 as A2).Test();
 
      Console.Read();
    }
  }
输出结果是:

A1...
A...
A2...

是不是和想的不一样,总之理解new和override对多态的影响很重要。  
目录
相关文章
|
4月前
|
消息中间件 Kubernetes NoSQL
c++11 关键字 override 与 final
c++11 关键字 override 与 final
|
6月前
|
存储 Cloud Native Linux
C++ 关键字override,final的作用
C++ 关键字override,final的作用
|
8月前
this和super的区别
this和super的区别
43 0
|
5月前
|
PHP
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
35 0
|
3月前
|
编译器 C++
C++新特性 override和final
C++新特性 override和final
|
8月前
|
Java 编译器 C#
C#中的override和new关键字
在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。 可以从派生类中使用 base 关键字调用基类方法。
37 1
|
8月前
14-self与super以及isMemberOfClass与isKindOfClass的区别
14-self与super以及isMemberOfClass与isKindOfClass的区别
27 0
|
编译器 C++
【C++11】final与override关键字和类的新功能
#「持之以恒」挑战赛-30天技术创作养成记!# 目录 一、final与override关键字 1.1 final 1.2 override 二、类的新功能 2.1 默认成员函数 2.2 类成员变量初始化 2.3 default关键字 2.4 delete关键字
79 0
【C++11】final与override关键字和类的新功能
override 指示符
override 指示符
63 0
|
Web App开发 自然语言处理 C++
学习C++,学习类,那override和final你用过没?
学习C++,学习类,那override和final你用过没?
85 0
学习C++,学习类,那override和final你用过没?