Middle
Ի՞նչ են Dart-ում աբստրակտ դասը և միկսինը:
sobes.tech AI
Պատասխան AI-ից
Աբստրակտ դաս:
- Չի կարող անմիջապես ինստանցիա կազմել:
- Կարող է պարունակել աբստրակտ մեթոդներ (անվերածում) և իրականցված մեթոդներ:
- Դասերը ժառանգում են աբստրակտ դասից
extendsբանալի բառով: - Դասը կարող է ժառանգել միայն մեկ դասից (միայնակ ժառանգություն):
Միկսին:
- Չի կարող անմիջապես ինստանցիա կազմել:
- Չի կարող ունենալ կոնստրուկորներ:
- Կարող է պարունակել իրականցված մեթոդներ, բայց չի կարող ունենալ աբստրակտ մեթոդներ (Dart 2.1-ից առաջ, երբ հայտնվեցին աբստրակտ միկսիններ):
- Դասերը օգտագործում են միկսինների գործառույթը
withբանալի բառով: - Դասը կարող է օգտագործել մի քանի միկսիններ:
- Օգտագործվում է կոդի վերաօգտագործման և գործառույթների ավելացման համար դասարաններին առանց ժառանգության: Իրականում, դա թույլ է տալիս "խառնել" վարքագծերը:
Աբստրակտ դասի օրինակ:
abstract class Animal {
void makeSound(); // Աբստրակտ մեթոդ
void eat() {
print('Ճաշակ...');
}
}
class Dog extends Animal {
@override
void makeSound() {
print('Հաու!');
}
}
Միկսին օրինակ:
mixin CanJump {
void jump() {
print('Կատակում!');
}
}
class Cat with CanJump { }
Համեմատություն աղյուսակով:
| Գծանշում | Աբստրակտ դաս | Միկսին |
|---|---|---|
| Օբյեկտի ստեղծում | Ոչ | Ոչ |
| Կոնստրուկտոր | Կարող է ունենալ | Չի կարող ունենալ |
| Աբստրակտ մեթոդներ | Կարող է ունենալ | Չի կարող ունենալ (Dart 2.1-ից առաջ) |
| Իրականցված մեթոդներ | Կարող է ունենալ | Կարող է ունենալ |
| Օգտագործում | extends |
with |
| ժառանգություն/օգտագործում | Միայնակ ժառանգություն | Բազմակի օգտագործում |
| Միտքը | Ընդհանուր պայմանագիր սահմանել | Կոդի վերաօգտագործում, վարքագծի ավելացում |