개발하는 두더지

Flutter - Dart로 추상클래스 만들기 본문

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);
}
Comments