Abstrakt sinflar Abstrakt sinf tushunchasi. Abstrakt sinfdan foydalanish zarurati


Abstrakt sinf abstrakt elementlar uchun bayonlarni o'z ichiga olmaydi?


Download 0.54 Mb.
bet7/8
Sana19.06.2023
Hajmi0.54 Mb.
#1600183
1   2   3   4   5   6   7   8
Bog'liq
8-Abstrakt sinflar

12. Abstrakt sinf abstrakt elementlar uchun bayonlarni o'z ichiga olmaydi?
Ha, ehtimol. C # kompilyatori abstrakt elementlar mavjud bo'lmagan abstract kalit so'zi bilan sinf bayonsiga ruxsat beradi.
Ushbu xususiyat dasturni ishlab chiqishning dastlabki bosqichida ierarxiyaning yuqori qismidagi sinfning barcha elementlari ro'yxati hali to'liq ma'lum bo'lmaganda foydalidir. Biroq, dasturni yanada rivojlantirish (ishlab chiqish) bilan bu sinf abstrakt elementlarni o'z ichiga olishi va shuning uchun abstrakt bo'lishi kerakligi allaqachon aniq.
Masalan. Sinflar ierarxiyasi rivojlanishining boshida abstrakt vilkasi sinfi kiritiladi. Bu misol BaseAbstractClass nomli sinfni e'lon qiladi.
// Hozircha ierarxiyadagi asosiy sinf
// abstrakt elementlarni o'z ichiga olmaydi
abstract class BaseAbstractClass
{
// Bu erda kelajakda bo'lishi mumkin
// abstrakt elementlar qo'shildi
}


13. Abstrakt sinfdan foydalanishni ko'rsatadigan rasm

2-rasm. Abstrakt sinfdan foydalanishga misol.


14. Abstrakt sinf boshqa abstrakt sinfdan meros bo'la oladimi? Abstrakt sinf boshqa abstrakt bo'lmagan sinfdan meros bo'lishi mumkinmi?
Ha. Abstrakt sinf abstrakt va abstrakt bo'lmagan sinflardan meros bo'lishi mumkin. Bunday holda, meros qoidalari abstrakt bo'lmagan sinflarni meros qilib olish bilan bir xil bo'ladi. Ierarxiya zanjiri davomida abstrakt va abstrakt bo'lmagan sinflar bir-birini navbatma-navbat meros qilib olishlari mumkin.
Misol. Quyidagi misol abstrakt sinflarni abstrakt bo'lmaganlar bilan birgalikda ishlatish erkinligini ko'rsatadi.
namespace ConsoleApp5
{
// Abstrakt sinf A_Abstract - ierarxiyaning yuqori qismi
abstract class A_Abstract
{
// sinfning ayrim ichki maydoni
public int a;
}
// Abstrakt bo'lmagan B sinfi A_Abstract dan olingan.
class B : A_Abstract
{
public int b;
}
// Abstrakt klassi C_Abstract abstrakt bo'lmagan B sinfidan olingan.
abstract class C_Abstract : B
{
public int c;
}
// D abstrakt sinf emas.
class D : C_Abstract
{
public int d;
}
class Program
{
static void Main(string[] args)
{
// 1. B, D sinflari nusxalarini e'lon qilinishi.
// A_Abstract, C_Abstract sinflari nusxalarini e'lon qilishga ruxsat berilmaydi.
B objB = new B();
D objD = new D();
// A_Abstract obj = new A_Abstract(); - xató e’lon qilinishi
// 2. ObjB nusxasidan elementlarga kirish.
objB.a = 23;
objB.b = 33;
// obj.d = 40; - xato, meros qilib olingan sinf elementiga kira olmadi.
// 3. objD nusxasidagi elementlarga kirish.
objD.a = 77;
objD.b = 777;
objD.c = 7777;
objD.d = 7777;
}
}
}



Download 0.54 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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