Flutter - Dart 基础(关于类中的 setter 和 getter)

2,526 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

成员变量(属性)

在面向对象的语言中,类都是由成员变量和方法组成的。类中的成员变量在其他编程语言中也被称作是对象的属性,成员变量常用于封装对象中的数据。在 Dart 中,对象通常会把其所需要的数据保存为各种成员变量


公有成员变量和私有成员变量

Dart 中没有 publicprotectedprivate 的概念

  • 如果成员变量前面没有添加下划线 _,那么这个成员变量为公有成员变量

  • 如果成员变量前面添加下划线 _,那么这个成员变量为私有成员变量

  • 成员变量

    class Student {   
        // 公有成员变量
        String? name;
        // 私有成员变量
        String? _city = "beijing";
    
        void sayHI() {
            print("$name 来自 $_city");
        }
        
        @override
        String toString() {
            return "\n name:$name \n age:$age \n city:$_city";
        }
    }
    
    
    void main(List<String> args) {
        final stu = Student();
        stu.name = "dart";
        stu.sayHI();
        print(stu);
    }
    
    log:
    dart 来自 beijing
    
    name:dart
    age:null
    city:beijing
    

通过 setter 和 getter 访问成员变量

每一个成员变量都有一对 settergetter 方法,用来读写成员变量

  • 关于 setter 方法

    使用关键字 set 修饰。关键字set 放在方法名前面,将成员变量作为参数传入。需要注意的是方法名和成员变量名字不能相同

  • 关于 getter 方法

    使用关键字 get 修饰。关键字get 放在方法返回类型和方法名之间。需要注意的是方法名和成员变量名字不能相同

class Student {
    late String name;
    
    // set 的方法
    set setName(String name) {
        this.name = name;
    }
    
    // get 的方法
    String get getName {
        return name;
    }
}


void main(List<String> args) {
    final stu = Student();
    
    // 调用 setter 和 getter 方法
    stu.setName = "dart";
    print(stu.getName);
}

log:
dart

类级成员变量

类级成员变量属于某一个类的,而不是属于某一个对象实例的。 可以认为所有的对象实例公用这个属性。类级成员用关键字static 定义

class Student {
    late String name;
    static var grade;
}

void main(List<String> args) {
    Student.grade = 3;
    print(Student.grade);
}

log:
3