Abstract class ni nini?

Hii ni class yenye abstract method walau moja. Abstract method ni method ambayo ina umetajwa jina ila implementtation yake (yaani code zake kwa ajili ya kuifanyisha kazi) zitakuwepo kwenye subclass. Ufupi wa maneno hii ni method ambayo haina body hivyo yenyewe itatengenishwa kwa semicolon (;) na hutengenezwa kwa kutumia keyword abstract.

Mfano:

abstract class gari{

 //abstract method

 tangazo();

 taarifa();

}

 

Hapo kuna abstract method 2 ambazo ni tangazo()  na taarifa(). Sasa utaona hizo method zina jina tu lakini hazina body. Sasa body yake tutakwenda kuiona kwenye subclass.

abstract class gari{

 //abstract method

 tangazo();

 taarifa();

}

 

class toyota extends gari{

 @override

 tangazo() {

   // TODO: implement taarifa

   print("Tunauza gari aina ya toyota");

 }

 @override

 taarifa() {

   // TODO: implement taarifa

   print("Toyota imeuzwa");

 }

 

}

 

class bugati extends gari{

 @override

 tangazo() {

   // TODO: implement tangazo

   print("Tunauza gari aina ya Bugati");

 }

 @override

 taarifa() {

   // TODO: implement taarifa

   print("Bugati imeuzwa");

 }

}

 

class tipa extends gari{

 @override

 tangazo() {

   // TODO: implement taarifa

   print("Tunauza gari aina ya Tipa");

 }

 

 @override

 taarifa() {

   // TODO: implement taarifa

   print("Tipa limeuzwa");

 }

}

 

void main(){

 bugati bu = bugati();

 bu.tangazo();

 bu.taarifa();

 print(" ");

 

 toyota to = toyota();

 to.tangazo();

 to.taarifa();

 print(" ");

 

 tipa ti = tipa();

 ti.tangazo();

 ti.taarifa();

 

}

 

 

Mambo ya kuzingatia:

  1. Huwezi kutengeneza object kwa kutumia abstract class
  2. Unaweza kuwa na abstract method na method ambazo sio abstract
  3. Abstract method inakuwa na signator moja tu.


 

Angalia mfano mwingine ambao umechanganya constructor na abstract

abstract class Shape {

 int dim1, dim2;

 // Constructor

 Shape(this.dim1, this.dim2);

 // Abstract method

 void area();

}

 

class Rectangle extends Shape {

 // Constructor

 Rectangle(int dim1, int dim2) : super(dim1, dim2);

 

 // Implementation of area()

 @override

 void area() {

   print('The area of the rectangle is ${dim1 * dim2}');

 }

}

 

class Triangle extends Shape {

 // Constructor

 Triangle(int dim1, int dim2) : super(dim1, dim2);

 

 // Implementation of area()

 @override

 void area() {

   print('The area of the triangle is ${0.5 * dim1 * dim2}');

 }

}

 

void main() {

 Rectangle rectangle = Rectangle(10, 20);

 rectangle.area();

 

 Triangle triangle = Triangle(10, 20);

 triangle.area();

}

 

Hapa nakuletea mfano wa abstract class ambayo ina abstract method,na method ambazo sio abstract yaani non abstract method 

abstract class Bank {

 String name;

 double rate;

 

 // Constructor

 Bank(this.name, this.rate);

 

 // Abstract method

 void interest();

 

 //Non-Abstract method: It have an implementation

 void display() {

   print('Bank Name: $name');

 }

}

 

class SBI extends Bank {

 // Constructor

 SBI(String name, double rate) : super(name, rate);

 

 // Implementation of interest()

 @override

 void interest() {

   print('The rate of interest of SBI is $rate');

 }

}

 

class ICICI extends Bank {

 // Constructor

 ICICI(String name, double rate) : super(name, rate);

 

 // Implementation of interest()

 @override

 void interest() {

   print('The rate of interest of ICICI is $rate');

 }

}

 

void main() {

 SBI sbi = SBI('SBI', 8.4);

 ICICI icici = ICICI('ICICI', 7.3);

 

 sbi.interest();

 icici.interest();

 icici.display();

}



 

 

Mwisho:

Katika somo linalofuata tutakwenda kujifunza kuhusu class interface na utofauti wake na class abstract.