例如:
class _Foo {
String _var1;
String var2;
}
我总是使用公共变量var2
,因为我认为在类已经是私有的时候创建私有变量是没有意义的,因为无论如何您都无法访问私有类。
但是我发现很多人使用私有变量_var1
。这只是个人喜好吗?当类是私有的时,私有实例变量的意义何在?如果您不能访问私有类,则无论它们是否是私有的,您都无法访问其所有实例变量。如果可以在同一库中访问私有类,则可以访问其所有实例变量,无论它们是否是私有的。
答案 0 :(得分:4)
将类设为私有不会将其成员设为私有,也不会使该类的实例不可访问。
假设
lib/private_class.dart
class Foo {
final _PrivateClass privateClass = _PrivateClass();
}
class _PrivateClass {
String publicFoo = 'foo';
String _privateBar = 'bar';
}
bin/main.dart
import 'package:so_53495089_private_field_in_private_class/private_class.dart';
main(List<String> arguments) {
final foo = Foo();
print(foo.privateClass.publicFoo);
// print(foo.privateClass._privateBar); // invalid because of ._privateBar
}
您不能声明私有类类型的变量或参数,也不能在另一个库中扩展或实现该类或创建该类的实例, 但是否则没有太大区别。
因此,如果该字段应该对API用户隐藏(内部状态),则将该字段设为私有。