方法隐藏和没有 "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
关键字显式是理想的,可以避免编译器警告。
这是隐藏的方法:
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
关键字显式是理想的,可以避免编译器警告。