Abstrakt sinflar va usullar
Abstrakt sinflar
Abstrakt sinflar mavhum kalit so'z bilan belgilangan sinflarni ifodalaydi:
1
2
|
abstract class Figure {
}
|
Abstrakt sinflar oddiy sinflarga o'xshaydi (ular maydonlarni, usullarni, konstruktorlarni ham belgilashi mumkin), bundan tashqari biz uning konstruktori yordamida mavhum sinf ob'ektini bevosita yarata olmaymiz.
1
2
3
4
|
void main (){
// Figure ellipse = Figure(); // так сделать нельзя - класс Figure - абстрактный
}
|
Qoida tariqasida, mavhum sinflar haqiqatda aniq timsolga ega bo'lmagan ob'ektlarni tavsiflaydi. Masalan, geometrik shakl aylana, kvadrat, uchburchakni ifodalashi mumkin, lekin bunday geometrik shakl o'z-o'zidan mavjud emas. Biz ishlayotgan aniq raqamlar bor. Shu bilan birga, barcha raqamlar qandaydir umumiy funktsiyalarga ega bo'lishi mumkin, masalan, perimetrni, maydonni va boshqalarni hisoblash usullari.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
void main (){
Figure rect = Rectangle(20, 30);
rect.calculateArea();
}
abstract class Figure {
void calculateArea(){
print("Not Implemented");
}
}
class Rectangle extends Figure{
int width;
int height;
Rectangle(this.width, this.height);
void calculateArea(){
int area = width * height;
print("area = $area");
}
}
|
Bu erda mavhum geometriya klassi konsolga shakl maydonini chop etadigan accountArea () usulini belgilaydi. Rectangle klassi ushbu usul uchun o'zining amalga oshirilishini belgilaydi.
Abstrakt usullar
Yuqoridagi misolda, tayanch klassdagi Figure Area usuli hech qanday foydali ish qilmaydi, chunki mavhum shaklning maydoni bo'lishi mumkin emas. Va bu holda, bunday usul mavhum sifatida yaxshiroq aniqlanadi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
void main (){
Figure rect = Rectangle(20, 30);
rect.calculateArea();
}
abstract class Figure {
void calculateArea();
}
class Rectangle extends Figure{
int width;
int height;
Rectangle(this.width, this.height);
void calculateArea(){
int area = width * height;
print("area = $area");
}
}
|
Mavhum usul oddiy usul bilan bir xil tarzda aniqlanadi, faqat usul tanasi o'rniga parametrlar ro'yxatidan keyin nuqta-vergul qo'yiladi: void accountArea () ;.
Shuni ta'kidlash kerakki, mavhum usullarni faqat mavhum sinflarda aniqlash mumkin. Bundan tashqari, agar asosiy sinf mavhum usulni aniqlasa, hosila sinf uni amalga oshirishi kerak, ya'ni usulning tanasini aniqlaydi.
Do'stlaringiz bilan baham: |