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
ความคิดเห็น