Interfeys toifalari tushunchasi Interfeys toifalarni abstract bazaviy sinflar bilan taqqoslash Maxsus interfeyslarni kiritish
MAVZULAR UMUMIY
- Bu sahifa navigatsiya:
- Person sinfi Object
MemberwiseClone()
|
Bu metod joriy ob’yektning a’zoma-a’zo nushasini qaytaradi va ko’pincha ob’yektlarni klonlashtirish uchun qo’lanadi (8-bobga qarang) |
Bazaviy Object sinfi ta’minlaydigan xulq-qtvorni namoyish etish uchun C# ning yangi ObjectOverrides degan konsol ilovasi loyihasini yaratamiz. Loyihaga C# ning Person degan yangi bo’sh sinfini qo’shaylik:
// Person sinfi Object ni kengaytirayotganini unutmang
class Person { }
Endi Main() metodini System.Object dan voris qilingan a’zolar bilan ishlashi uchun yangilaymiz:
class Program
{
static void Main(string [ ] args)
{
Console.WriteLine (“***** Fun with System.Object *****\n”);
Person p1 = new Person () ;
// System.Object dan vorislangan a’zolardan foydalanish
Console.WriteLine ("ToString: {0}", p1.ToString());
Console.WriteLine("Hash code: {0}", p1.GetHashCode());
Console.WriteLine("Type: {0}", p1.GetType());
// p1 ga boshqa ishoralar (ko’rsatkichlar) yaratish
Person р2 = p1;
object о = р2;
// Ishoralar xotiradagi bitta ob’yektni ko’rsatyaptimi?
if (о.Equals(p1) && р2.Equals (о))
{
Console.WriteLine("Same instance! ") ; //ayni nusxa
}
Console.ReadLine ();
}
}
Bu Main () metodi ekranga quyidagilarni chiqaradi:
***** Fun with System.Object *****
ToString: ObjectOverrides.Person
Hash code: 46104728
Type: ObjectOverrides .Person
Same instance !
Bu yerda ToString() metodining standart realizatsiyasi joriy toifaning to’liq berilgan ismini qaytarayotganiga ahamiyat bering (ObjectOverrides .Person). Har bir C# loyihasida shu loyihaning ismi bilan bir xil bo’lgan “ildiz fazolar ismi” aniqlanadi. Biz ObjectOverrides degan loyiha yaratdik, shu bois Person toifasi va Program sinfi ObjectOverrides ismlar fazosi ichiga joylashtirilgan. Equals() metodining standart xulq-atvori (vazifasi) ikki o’zgaruvchining xotiradagi ayni bitta ob’yektni ko’rsatayotgan-ko’rsatmayotganligini tekshirishdan iboratdir. Kodda biz p1 deb nomlangan yangi Person o’zgaruvchisini yaratdik. Ayni damda yangi Person ob’yekti boshqariluvchi uyumga joylashtiriladi. p2 o’zgaruvchi ham Person toifasiga mansub. Shunga qaramay, yangi nusxani yaratish o’rniga p2 o’zgaruvchiga p1 ishorasi berilmoqda. Shunday qilib, p1 va p2 o’zgaruvchilar huddi (object toifasiga mansub) o o’zgaruvchisi ko’rsatayotgan ayni bitta xotira ob’yektini ko’rsatadi. p1, p2 va o xotiraning bitta joyini ko’rsatayotgani bois, ekvivalentlikka tekshirish ijobiy natija beradi. Garchi System.Object ning tayyor xulq-atvori qator hollarda barcha ehtiyojlarni qanoatlantirsa ham, ko’pincha maxsus toifalarda bu voris olingan metodlarning bir qismi qayta aniqlanadi. Buni namoyish etish maqsadida shaxsning ismi, familiyasi va yoshini ifodalovchi xossalarni qo’shib, Person sinfini o’zgartiraylik; bularning barini maxsus konstruktor orqali o’rnatish mumkin:
// Person sinfi Object ni kengaytirayotganini unutmang
class Person
{
public string FirstName { get; set; } = “”;
public string LastName { get; set; } = “”;
public int Age { get; set; }
public Person(string fName, string IName, int personAge)
{
Do'stlaringiz bilan baham:
ma'muriyatiga murojaat qiling