Versi penjelasan saya berasal dari penggunaan properti untuk membantu memahami perbedaan.
override
cukup sederhana kan? Jenis yang mendasari menimpa orang tua.
new
mungkin menyesatkan (bagi saya itu). Dengan properti lebih mudah dipahami:
public class Foo
{
public bool GetSomething => false;
}
public class Bar : Foo
{
public new bool GetSomething => true;
}
public static void Main(string[] args)
{
Foo foo = new Bar();
Console.WriteLine(foo.GetSomething);
Bar bar = new Bar();
Console.WriteLine(bar.GetSomething);
}
Menggunakan debugger Anda dapat melihat bahwa Foo foo
ada 2 GetSomething
properti, karena sebenarnya memiliki 2 versi properti, Foo
danBar
', dan untuk mengetahui mana yang akan digunakan, c # "mengambil" properti untuk jenis saat ini.
Jika Anda ingin menggunakan versi Bar, Anda akan menggunakan penggantian atau gunakan Foo foo
sebagai gantinya.
Bar bar
hanya memiliki 1 , karena ingin perilaku yang sama sekali baru untuk GetSomething
.
new
membuat anggota baru dengan nama yang sama dan menyebabkan anggota asli menjadi tersembunyi, sementaraoverride
memperluas implementasi untuk anggota yang diwariskan"