flutter學習筆記之Dart-6建構函式和私有屬性、私有方法
阿新 • • 發佈:2020-12-27
技術標籤:flutter
一、構造方法 class Student { String name; int age; String school; //預設建構函式 Student(String name, int age, String school) { this.name = name; this.age = age; this.school = school; } //預設建構函式簡寫 Student(this.name, this.age, this.school); //命名建構函式 Student.setMsg1(String name, int age) { this.name = name; this.age = age; } //命名建構函式簡寫 Student.setMsg1(this.name, this.age); Student.setMsg2(this.name, this.age, this.school); void getMsg() { print('我叫$name,今年$age歲,在$school上學.'); } }
注意:預設建構函式只能有一個,命名建構函式可以有多個。
Student student = Student("張三", 20, '北京大學');
student.getMsg();
student = Student.setMsg2('李四', 21, '清華大學');
student.getMsg();
結果如下:
我叫張三,今年20歲,在北京大學上學.
我叫李四,今年21歲,在null上學.
二、私有屬性和私有方法
新建一個student.dart檔案,建立下述程式碼 class Student { String _name;//私有屬性 int age; String school; Student(this._name, this.age, this.school); void _getMsg() {//私有方法 print('我叫$_name,今年$age歲,在$school上學.'); } }
此時私有屬性和私有方法都無法訪問,如下圖:
為上述Student類中的私有屬性_name新增set和get方法,用於外部訪問。
class Student { String _name;//私有屬性 int age; String school; Student(this._name, this.age, this.school); void _getMsg() { print('我叫$_name,今年$age歲,在$school上學.'); } String get getName => _name;//獲取私有屬性 set setName(String name) {//設定私有屬性 _name = name; } void showMsg(){//呼叫私有方法 _getMsg(); } }
使用程式碼如下:
Student student = Student("張三", 20, '北京大學');
print(student.getName);
student.showMsg();
student.setName='李四';
student.showMsg();
執行結果如下:
三、在建構函式之前初始化例項變數
class Student { String _name;//私有屬性 int age; String school; // Student():_name='馬保國',age=50,school='太極傳承學院'; //下面這種寫法可以用於驗證是先例項化還是先初始化資料 Student():_name='馬保國',age=50,school='太極傳承學院'{ print(_name); print(age); print(school); } void _getMsg() { print('我叫$_name,今年$age歲,在$school上學.'); } String get getName => _name; set setName(String name) { _name = name; } void showMsg(){ _getMsg(); } }
使用
Student student = Student(); student.showMsg();
執行結果如下: