版权声明:欢迎转载,但请注明出处 https://blog.csdn.net/HaoDaWang/article/details/83031378
【dart】private 小坑
今天在看dart
相关,发现dart
里居然没有private
/protected
/public
等权限修饰符,但是要实现private
,只需要将需要修饰的字段或者方法,加上_
前缀即可。
但是这里比较坑的一点是,_
并不是从class
级别去限制,而是从package
级别去限制的。
这里有个简单的package
,同时还有一个main
函数
main(){
Person person = new Person("Jon");
print(person._name); // Jon
}
class Person{
String _name;
Person(String name){
this._name = name;
}
String getName(){
return this._name;
}
}
按理说这里不应该被访问到,这里只应该由name
的getter
来做唯一的访问接口,但是这里却轻而易举的访问到了,这不应该啊!
为了证明文章开头的那个说法,我把Person
抽到一个单独的文件中
touch person.dart
现在在main
中进行访问
main(){
Person person = new Person("Jon");
print(person._name); // [dart] The getter '_name' isn't defined for the class 'Person'.
}