class Animal { String name; Animal(this.name); void eat() { print("$name is eating."); } } class Dog extends Animal { String breed; Dog(String name, this.breed) : super(name); void bark() { print("Woof! Woof!"); } } void main() { Dog myDog = Dog("Buddy", "Labrador"); myDog.eat(); // Gọi phương thức eat của lớp cha sử dụng super. myDog.bark(); }

Setter, Getter, và Kế Thừa trong Dart

  1. Setter
  • là 1 phương thức giúp đặt giá trị cho 1 thuộc tính trong đối tượng
  • được gọi và sử dụng với tên là set
class Rectangle {
  double _width;

  set width(double value) {
    if (value > 0) {
      _width = value;
    } else {
      print("Width should be greater than 0.");
    }
  }
}

void main() {
  Rectangle rectangle = Rectangle();
  rectangle.width = 10;  // Gọi setter để đặt giá trị cho width.
}

2. Getter

  • là 1 phương thức giúp lấy giá trị của 1 thuộc tính trong đối tượng
  • được gọi và sử dụng với tên là get
class Rectangle {
  double _width;

  set width(double value) {
    if (value > 0) {
      _width = value;
    } else {
      print("Width should be greater than 0.");
    }
  }

  double get width => _width;
}

void main() {
  Rectangle rectangle = Rectangle();
  rectangle.width = 10;
  print(rectangle.width);  // Gọi getter để lấy giá trị của width.
}

3. Kế thừa (extends)

  • cho phép 1 class con sử dụng lại các phương thức và thuộc tính của class cha
  • Ngoài ra khi khởi tạo 1 class con mà muốn gọi tới constructor của class cha thì có thể sử dụng super
class Animal {
  String name;

  Animal(this.name);

  void speak() {
    print("Animal speaks");
  }
}

class Dog extends Animal {
  Dog(String name) : super(name);

  void bark() {
    print("Woof! Woof!");
  }

  // Override phương thức speak từ lớp cha.
  @override
  void speak() {
    print("Dog barks");
  }
}

void main() {
  Dog myDog = Dog("Buddy");
  myDog.bark();
  myDog.speak();  // Gọi phương thức speak của lớp con.
}
sample