Flutter循序渐进==>封装、继承、多态、抽象类以及属性修改
在Flutter中,可以使用类和类成员(如方法和属性)来实现封装、继承、多态和抽象。以下是一些示例代码:
// 封装 - 创建一个类和私有属性
class Person {
String _name;
// 构造函数
Person(this._name);
// 公有方法访问私有属性
String greet() {
return 'Hello, my name is $_name.';
}
}
// 继承 - 创建子类继承父类
class Employee extends Person {
int _salary;
// 构造函数调用父类构造函数
Employee(String name, this._salary) : super(name);
// 覆盖方法
@override
String greet() {
return 'Hello, my name is ${super.greet()}, and I earn \$$_salary.';
}
}
// 多态 - 使用父类类型变量引用子类实例
void main() {
Person person = Person('Alice');
print(person.greet()); // Hello, my name is Alice.
Person employee = Employee('Bob', 50000);
print(employee.greet()); // Hello, my name is Bob, and I earn $50000.
}
// 抽象类和方法
abstract class Animal {
String name;
Animal(this.name);
// 抽象方法
speak();
}
class Dog extends Animal {
Dog(String name) : super(name);
// 实现抽象方法
@override
speak() {
return 'Woof! My name is $name.';
}
}
void main() {
Dog dog = Dog('Rex');
print(dog.speak()); // Woof! My name is Rex.
}
// 属性修改
class Circle {
double _radius = 0.0;
Circle(this._radius);
double get radius => _radius;
void set radius(double value) {
if (value >= 0) {
_radius = value;
}
}
double area() => _radius * _radius * 3.14;
}
void main() {
Circle circle = Circle(5.0);
print(circle.area()); // 输出圆的面积
circle.radius = -2; // 设置一个无效的半径,将被忽略
print(circle.area()); // 输出更新后的圆的面积
}
这个例子展示了如何在Flutter中使用类和继承来实现封装和继承,如何使用抽象类和方法来实现多态,以及如何通过getter和setter来修改属性值。
评论已关闭