c# - 在 C# 中使用 new 关键字继承

标签 c# inheritance new-operator

我试图理解 C# 中的继承,这就是我尝试一些示例的原因,但我知道使用 new 关键字或不使用 new 关键字的事情都是一样的。

那为什么我们需要new关键字呢?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        try
        {
            List<int> col = new List<int>();
            Class1 c1 = new Class1();
            Class2 c11 = new Class2();
            Class1 c111 = new Class3();
            c1.setmessage();
            c11.setmessage();
            c111.setmessage();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }
   
}
class Class1
{
    private string member;

    public  void setmessage()
    {
        MessageBox.Show("Class1");
    }
}

class Class2 : Class1
{
    private string member;

    public  void setmessage()
    {
        MessageBox.Show("Class2");
    }
}

最佳答案

在此上下文中,new 关键字表示方法的隐藏

这意味着就继承而言,您不是覆盖基类中的方法,而是编写一个完全独立的方法。

如果未被重写的可重写方法未被使用,编译器会发出警告,因为大多数情况下这是一个错误,应该简单地重写该方法。那里有 new 关键字表明隐藏是一个明确的决定。

参见 Difference between shadowing and overriding in C#? .

关于c# - 在 C# 中使用 new 关键字继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043872/

相关文章:

C++删除用new分配的char指针

c# - 如何在控件中使用 PreLoad 事件?

c# - 折叠和展开 SplitContainer 面板

python - 使用就地切片扩展列表类

php - 我可以在 PHP 中调用没有名称的继承父方法吗?

Java - 列表、类型和继承(也许是通用的?)

c++ - 为什么我不能使用 "delete"关键字回收动态分配的内存?

java - Java 创建对象时速度慢吗?

c# - 将 linq-to-sql 表达式的一部分分解为一个单独的函数

c# - 为什么在实现接口(interface)方法时允许虚拟?