추상화
하여 다른 교통수단 객체를 생성할 시 사용할 수 있도록 처리abstract class Vehicle {
int? doors;
int? wheels;
void hornSound();
}
class Car extends Vehicle {
int? doors = 2;
int? wheels = 4;
void hornSound() {
print('Beeeeeep');
}
}
class Bus extends Vehicle {
int? doors = 2;
int? wheels = 4;
void hornSound() {
print('Hooooonkk');
}
}
추상화 메소드를 사용하기 위해서는 abstract
키워드 사용
abstract class Pen{}
abstract
키워드를 사용한 클래스는 추상화 메소드를 가질 수 있음. (일반 메소드도 동일하게 가질 수 있음)
추상화 메소드는 구현부가 없는 메소드를 말함
abstract class Pen {
int? rateOfInkFlow;
void write(); // 추상화 메소드
}
추상화 클래스는 인스턴스화 할 수 없음
void main() {
final pen = Pen() // 에러 발생
}
부모 클래스의 모든 추상화 메소드는 자식 클래스에서 구현되어야 함
추상화 클래스는 구현되어있는 메소드를 가지고 있을 수 있음
abstract class Pen {
int? rateOfInkFlow;
void write() {
print('Writing...');
}
}
class BallPoint extends Pen {}
void main() {
final ballPoint = BallPoint();
ballPoint.write();
}
추상화 클래스는 생성자를 가질 수 있음
추상화 클래스는 작접적으로 인스턴스를 생성할 수는 없지만, 서브클래스를 통해서 생성자를 호출 할 수 있음.
abstract class Pen {
int rateOfInkFlow;
Pen({
required this.rateOfInkFlow,
});
void write();
}
class BallPoint extends Pen {
BallPoint() : super(rateOfInkFlow: 1);
void write() {
print('Writing with BallPoint');
}
}