Inheritance and Exceptions Har qanday oop tilida siz sinflar ierarxiyasini



Download 1,48 Mb.
Sana21.04.2022
Hajmi1,48 Mb.
#570731
Bog'liq
Inheritance and Exceptions


Inheritance and Exceptions

Har qanday OOP tilida siz sinflar ierarxiyasini yaratishingiz mumkin va Dart ham bundan mustasno emas.


Example :

Ko’rganingizdek, A super klass yoki “parent” deb ataladi, B esa subClass (yoki "child").
Metodlar child classlarda qaytadan override qilib moslashtirilib ishlatilishi mumkin.

@override izohi ixtiyoriy, lekin yaxshisi buni ishlatgan ma’qul.



Starting from Dart 2.9 onwards, implicit downcasts are not allowed:


What is the implicit downcasts : https://codewithandrea.com/articles/implicit-downcast-no-longer-allowed/


Siz merosxo’rlikni bloklay olmaysiz, chunki har bir sinfda extends modifikator bo'lishi mumkin.


Masalan, Java-da siz final class A {} yozishingiz mumkin, bu degani "Siz mendan meros qilib olmaysiz " deyilishidir. Lekin Dartda bunday narsa yo'q.
Oddiy metodlardan tashqari siz setters (set) va getters (get) ni ham override qilishingiz mumkin. Dart C++ kabi bir nechta merosxo’rlikni (multiple inheritance) qo'llab-quvvatlamaydi, ya'ni extends faqat bitta class bilan ishlaydi.

super and constructors .
Dartdagi har bir subsinf avtomatik ravishda superklassning standart konstruktorini chaqirishga harakat qiladi.





Biroq, class oddiy yani constructor yo’q bo'lsa, yoki parametrsiz bo’lsa super constructor kerak emas;




Abstract classes.

abstract kalit so'zi to'g'ridan-to'g'ri yaratib(ishlatib) va Undan obyekt olib bo'lmaydigan classni belgilaydi, faqat undan meros olingan classlarga mumkin. abstract class odatdagidek bir (yoki bir nechta) konstruktorni bo’lishi mumkin.



Odatda abstract class funksiya tanasiz, tananing o'rniga, nuqta-vergul (;) qo'yish bilan aniqlanishi mumkin bo'lgan abstract funksiyalarni o'z ichiga oladi. Oddiy classlarda abstract funsiyalarni aniqlay olmaysiz.
getters va setters ham abstract bo'lishi mumkin



Why We need Abstract Classes ?



Interfaces

Boshqa dasturlash tillaridan farqli o'laroq, Dartda interface kalit so'zi yo'q va


interfeyslarni yaratish uchun classlardan foydalanishingiz kerak.

implements bu yerda kalit so’z. Oddiy classlardan farqli o'laroq, bu erda siz ParentClass/interfeys tomonidan belgilangan har bir methodni override qilishingiz kerak.

Resourses : https://stacksecrets.com/flutter/implements-v-s-extends-v-s-with-keywords-in-dart



extends vs implements
Biz extends child classlar uchun ekanligini ko’rdik, implements esa interface classlar uchun edi. Endi ikkisining texnik farqlarini korib chiqaylik:

  • Class B extends A {} dan foydalanganda siz A classniing har bir methodni override qilishga majbur EMASsiz. Merosxo’rlik olinadi va siz xohlagan metodingizni override qilishingiz yoki qilmasligingiz mumkin.

Implements da esa aksincha.

  • Dart da bir nechta merosga yani multiple inheritance ga ruxsat berilmagan bo'lsa-da, siz class ni kengaytirishingiz va undan ko'proq narsani amalga oshirishingiz mumkin Masalan, Java va C# ham shunday yo'l tutadi.

// Error
class A extends B, C, D {}
// Valid
class A extends B implements C, D {}

https://www.geeksforgeeks.org/dart-extends-vs-with-vs-implements/


The Object class
Kodda aniq yozilmagan bo'lsa ham, har qanday Dart klassi Object {} sinfidan turlatilgan bo’ladi. Bu ba'zi mashhur tillar bilan bir xil tuzilishdir Java, C# va Delphi kabi. Har bir class Object classida e'lon qilingan metodlarni bekor qilishi mumkin va kerak bo’lganda override qilib ishlatishi mumkin bo’ladi.

String toString().


final f = Fraction(1, 2);
final s = "My fraction is $f";
bu yerda String interpolatsiyasi avtomatik ravishda toString() ni chaqiradi, bu kodni qisqartiradi va qulay qiladi.
____________________________________________________________

Ikkita ob'ektni solishtirmoqchi bo'lganingizda == operatoridan foydalaniladi. Lekin bu doim siz kutgandek ishlamaydi, Agarki ikkita o'zgaruvchi bir xil ob'ektga ishora qilmasa.

Mantiqan biz ularni teng deb o'ylardik, lekin kompilyator bizga boshqa javob ko’rsatmoqda. ex1 va ex2 mantiqan teng, lekin farq qiladigan ikki xil ob'ektni amalda ko'rsating, chunki har bir o'zgaruvchi boshqa instance ga ega.




Istalgan natijalarni olish uchun tenglik operatorini override qilishingiz kerak


Download 1,48 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish