Ma’ruza 02 (28)
Mavzu: System.Object asosiy tayanch sinfidan xosilaviy sinflarni yaratish va vorislarida metodlarni qayta aniqlash
Reja:
System.Object ning metodlari va ularni ishlatish
System.Object.ToString() metodini qayta aniqlash
System.Object.Equals() metodini qayta aniqlash
System.Object.GetHashCode () metodini qayta aniqlash
O’zgartirilgan Person sinfini ishlatib ko’rish
Bu ma’ruzamizda .NET platformasi ichidagi bosh ajdod sinf – Object sinfini tadqiq etish biela shug’ullanamiz. Avvalgi darslarimizda misol tariqasida yaratgan sinflarimizda hech qanday ajdod sinf ko’rsatilmasdan, to’g’ridan to’g’ri sinf hoisl qilib ketilavergan edi. Masalan, Car sinfini usbu andoza bo’yicha yaratish mumkin:
// Car uchun ajdod sinf qaysi?
class Саг { … }
.NET dunyosida har bir toifa oxir oqibatda System.Object deb atalgan bazaviy sinfning vorisi bo’ladi, bu C# tilida object kalit so’zi orqali ifodalanadi. Bu Object sinfi platform ichida har bir toifa uchun umumiy bo’lgan a’zolarni aniqlaydi. Mohiyatan, siz har gal ajdodi ko’rsatilmagan sinf qurganingizda, kompilyator avtomatik tarzda uni Object sinfining vorisi qilib qo’yadi. Agar siz bunga o’zingiz alohida urg’u berib ketmoqchi bo’lsangiz, Object sinfining vorislarini siz quyidagicha aniqlashingiz ham mumkin (biroq siz bunday qilishga majbur emassiz):
// System.Object sinfidan voris olinayotganini ochiq ko’rsatish.
class Car : object { … }
Har qanday sinfda bo’lgani kabi, System.Object sinfida ham a’zolar to’plami aniqlangan. Quyida keltirilgan C# dagi rasmiy aniqlanishdan ko’rinib turibdiki, ba’zi a’zolarni vorislarda qayta aniqlash mumkin bo’lishligini ta’minlash uchun virtual sifati bilan aniqlangan bo’lsa, boshqalari static kalit so’zi bilan belgilangan (va shu bois ularga sinf sathidan murojaat qilinadi):
public class Object
{
// Virtual a’zolar.
public virtual bool Equals(object obj);
protected virtual void Finalize();
public virtual int GetHashCode();
public virtual string ToStringO;
// Nusha sathidagi novirtual a’zolar.
public Type GetType ();
protected object MemberwiseClone();
// Statik a’zolar.
public static bool Equals(object objA, object objB);
public static bool ReferenceEquals(object objA, object objB);
}
Quyidagi jadvalda System.Object ning ko’p ishlatiladigan ba’zi metodlari tomonidan bajariladigan vazifalar bayoni keltirilgan.
Do'stlaringiz bilan baham: |