Dart 类的私有方法&私有属性

Dart和其他面向对象语言不一样,Dart中没有,public private protected这些访问修饰符,可以定义变量私有,公有或者保护。
利用_(下划线)将一个属性或者方法定义成私有。
(抽离在单独文件,私有属性和方法调用没有效果,需要间接调用才有效果。)

写在main中的类,私有/公有都可以调用
class Animal {
  String _name;
  int age;
  // 默认构造函数的简写
  Animal(this._name,this.age);
  
  void PrintInfo(){
    print("${this._name}----${this.age}");
  }
}

void main(){
  Animal p1 = new Animal('小狗',3);
   p1.PrintInfo();
}

小狗----3

抽离class

class Animal {
  String _name;
  int age;
  // 默认构造函数的简写
  Animal(this._name,this.age);
  
  void PrintInfo(){
    print("${this._name}----${this.age}");
  }
// 公有方法 间接访问私有属性
  String getName(){
    return this._name;  // 私有属性在当前类里使用
  }
// 公有方法 间接访问私有方法
  void _run(){
    print("私有方法,公有方法调用");
  }
  execRun(){
    this._run();  // 类里面方法的相互调用
  }
}
void main(){
  Animal p1 = new Animal('小狗',3);
   print(a.age);  // 直接访问age公有属性
   print(a.getName());  // 间接访问_name私有属性
   a.execRun();  // 间接访问_run私有方法
}

3
小狗
私有方法,公有方法调用

你可能感兴趣的:(Dart 类的私有方法&私有属性)