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:
- Huwezi kutengeneza object kwa kutumia abstract class
- Unaweza kuwa na abstract method na method ambazo sio abstract
- 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.