Flutter
Flutter - Dart로 추상클래스 만들기
덜지
2019. 4. 20. 01:06
dartpad - dart 코드를 작성하여 실행시켜볼 수 있는 콘솔
Dart로 추상클래스 만들기
dart는 추상클래스를 지원합니다. 그리고 한개의 dart 파일에서 여러개의 클래스를 선언할 수 있습니다.dart.math
는 dart의 core library 입니다. 다른 코어 라이브러리들도 import 시킬 수 있습니다.
include dart:core, dart:async, dart:convert, dart:collection
dart 1.x 버전에서는 PI
처럼 대문자로 표기했지만 dart 2에서는 pi
처럼 소문자로 표기합니다.
클래스 외부에 팩토리 메소드를 최상위 메소드로 구현하여 사용할 수 있습니다.
import 'dart:math';
Shape shapeFactory(String type) {
if (type == 'circle') return Circle(2);
if (type == 'square') return Square(2);
throw 'Can\'t create $type.';
}
abstract class Shape {
num get area;
}
class Circle implements Shape {
final num radius;
Circle(this.radius);
num get area => pi * pow(radius, 2);
}
class Square implements Shape {
final num side;
Square(this.side);
num get area => pow(side, 2);
}
main() {
final circle = shapeFactory('circle');
final square = shapeFactory('square');
print(circle.area);
print(square.area);
}
또는 factory
키워드를 사용하여 팩토리 생성자를 구현할 수 있습니다.
import 'dart:math';
abstract class Shape {
factory Shape(String type) {
if (type == 'circle') return Circle(2);
if (type == 'square') return Square(2);
throw 'Can\'t create $type.';
}
num get area;
}
class Circle implements Shape {
final num radius;
Circle(this.radius);
num get area => pi * pow(radius, 2);
}
class Square implements Shape {
final num side;
Square(this.side);
num get area => pow(side, 2);
}
main() {
final circle = Shape('circle');
final square = Shape('square');
print(circle.area);
print(square.area);
}