Memanggil Kaedah Base Secara Terus
Dalam OOP, mengakses kaedah kelas asas dalam kelas terbitan adalah penting untuk mengatasi kaedah. Walau bagaimanapun, persoalan timbul: "Bagaimanakah kita boleh memanggil kaedah asas asas, memintas sebarang penggantian perantaraan?"
Untuk mengelakkan panggilan yang tidak diingini kepada Derived.Say() dalam kelas SpecialDerived, kod sumber asal tidak boleh diubahsuai. Walau bagaimanapun, penyelesaian wujud. Dengan memperkenalkan kaedah baharu, CustomSay(), dalam kelas Derived dan mengatasinya dalam SpecialDerived, kami boleh mengubah hala tingkah laku lalai sambil mengekalkan kaedah Say() yang sedia ada.
Berikut ialah kod yang diubah suai:
// Cannot change source code class Derived : Base { public override void Say() { CustomSay(); base.Say(); } protected virtual void CustomSay() { Console.WriteLine("Called from Derived."); } } class SpecialDerived : Derived { protected override void CustomSay() { Console.WriteLine("Called from Special Derived."); } }
Sekarang, apabila memanggil sd.Say(), hasilnya akan be:
Called from Special Derived. Called from Base.
Penggunaan kaedah baharu CustomSay() membenarkan penyesuaian tanpa mengubah suai kaedah Say() yang ditindih. Walau bagaimanapun, pada umumnya tidak digalakkan untuk mengakses kaedah asas melebihi tahap pertama kerana potensinya untuk masalah kekeliruan dan penyelenggaraan.
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Kaedah Kelas Asas Secara Terus, Melangkau Penggantian Perantaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!