Sobes.tech
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
ժառանգություն/օգտագործում Միայնակ ժառանգություն Բազմակի օգտագործում
Միտքը Ընդհանուր պայմանագիր սահմանել Կոդի վերաօգտագործում, վարքագծի ավելացում