Dart中的私有方法 和私有属性

Dart和其他面向对象语言不一样,Data中没有 public private protected这些访问修饰符合

但是我们可以使用 _ 把一个属性或者方法定义成私有。

 

1、新建lib/Animal.dart

class Animal{
  late String _name;   //私有属性
  late 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();  //类里面方法的相互调用
  }
}

2、main.dart中引入lib/Person.dart


import 'lib/Animal.dart';
void main(){ 
    Animal a=new Animal('小狗', 3);
    
    print(a._name) //错误:类外部没法访问私有属性

    a._run() //错误:类外部没法访问私有方法

    print(a.getName());   //正确:通过公有方法访问私有属性

    a.execRun();   //正确:间接的调用私有方法
 }