Abstract Class ในภาษา Dart

wave
มานพ กองอุ่น 16 มิ.ย. 2019 23:20:12 5,908

Abstract Class เป็น Class ที่กำหนด method ไว้เพื่อให้ทำ interface 

void main() {
  final square = Square(side: 20.0);
  print(square.area());
}

abstract class Shape {
  double area();
}

class Square implements Shape {
  Square({this.side});
  final double side;
  double area() => side * side; 
}

ผลลัพท์

400

ทั้งนี้เราสามารถ implements Class ได้หลายๆ Class ตัวอย่าง

void main() {
  final square = Square(side: 20.0);
  print(square.area());
  
  final circle = Circle(radius: 5.0);
  print(circle.area());
}

abstract class Shape {
  double area();
}

class Square implements Shape {
  Square({this.side});
  final double side;
  double area() => side * side; 
}

class Circle implements Shape {
  Circle({this.radius});
  final double radius;
  double area() => radius * radius * 3.14159265;
}

ผลลัพท์

400
78.53981625

จะเห็นว่าเราต้องทำการกำหนด method area() ในทุก Class ที่ implements Abstract Class

Abstract Class กับ Function

เราสามารถใช้ Abstract Class กับ function ได้ ซึ่งลักษณะนี้เราเรียกการใช้งานแบบ interface

import 'dart:math';

void main() {
  final square = Square(side: 20.0);
  printArea(square);
  
  final circle = Circle(radius: 5.0);
  printArea(circle);
}

void printArea(Shape shape) {
  print(shape.area());
}

abstract class Shape {
  double area();
}

class Square implements Shape {
  Square({this.side});
  final double side;
  double area() => side * side; 
}

class Circle implements Shape {
  Circle({this.radius});
  final double radius;
  double area() => radius * radius * pi;
}

ผลลัพท์

400
78.53981625

 

Computed

เราสามารถใช้ get สำหรับ การ Computed ได้ เช่น

import 'dart:math';

void main() {
  final square = Square(side: 20.0);
  printArea(square);
  
  final circle = Circle(radius: 5.0);
  printArea(circle);
}

void printArea(Shape shape) {
  print(shape.area);
}

abstract class Shape {
  double get area;
}

class Square implements Shape {
  Square({this.side});
  final double side;
  double get area => side * side; 
}

class Circle implements Shape {
  Circle({this.radius});
  final double radius;
  double get area => radius * radius * pi;
}

ผลลัพท์

400
78.53981633974483

 


ความคิดเห็น

หากบทเรียนรู้มีความผิดพลาดประการใด หรือมีข้อเสนอแนะกรุณาแจ้ง contact@programmerthailand.com

เขียนบทเรียนรู้ของคุณ

รายละเอียด
  • ดู 5,908
  • รักเลย 0
  • หมวดหมู่ Flutter
  • เขียนเมื่อ
  • แก้ไขเมื่อ
  • Tags dart flutter abstract class
ข้อมูลผู้เขียน
มานพ กองอุ่น

มานพ กองอุ่น

เป็นสมาชิกเมื่อ: 18 ธ.ค. 2009