方法隐藏和没有 "new" 关键字有什么区别?

What is difference between method hiding and without "new" keyword?

这是隐藏的方法:

class SuperClass : GLib.Object {
    public void method1() {
        stdout.printf("SuperClass.method1()\n");
    }
}

class SubClass : SuperClass {
    public new void method1() {
        base.method1();
        stdout.printf("SubClass.method1()\n");
    }
}

没有“new”关键字的相同代码:

class SuperClass : GLib.Object {
    public void method1() {
        stdout.printf("SuperClass.method1()\n");
    }
}

class SubClass : SuperClass {
    public void method1() {
        base.method1();
        stdout.printf("SubClass.method1()\n");
    }
}

这些有什么区别?

编辑:在生成的 C 代码中绝对没有区别,所以我认为编译后的二进制文件是一样的。

没有任何功能差异,但是使用 new 关键字显式是理想的,可以避免编译器警告。