oop - 为什么在这里可以访问类中的私有变量?
问题描述
我刚刚开始使用 D 语言,并且正在尝试一些面向对象的代码。
我正在尝试以下代码:
import std.stdio;
class Testclass{
private int intvar = 5;
private string strvar = "testing";
}
void main(){
auto tc = new Testclass();
// check if private variables are accessible:
writeln(tc.intvar);
writeln(tc.strvar);
}
运行上面的代码有以下输出:
$ rdmd soq_private.d
5
testing
我发现 intvar 和 strvar 变量可以从 main fn 访问。如果它们在类中被声明为私有,它们是否应该不可访问?
解决方案
参见“D Lang”维基:
“私有意味着只有封闭类的成员才能访问该成员,或者与封闭类在同一模块中的成员和函数。私有成员不能被覆盖。”
https://wiki.dlang.org/Access_specifiers_and_visibility
由于您与封闭类位于同一模块中,因此这是允许的。
推荐阅读
- javascript - 为什么我不能将其他 css 元素应用到我的自定义 css 类?
- python - 在 Azure 容器实例中部署机器学习模型时如何访问所有已注册的模型?
- javascript - 隐藏 Adobe 表单中的文本字段并删除空格以向上移动下一个文本
- javascript - 如何将 LocalStorage 功能添加到我的 TODO LIST。如何以及在什么时候?
- jupyter - 默认启用扩展管理器
- r - 从 odbcDriverConnect 屏蔽密码
- jenkins - 如何使用带复选框的扩展选择参数插件?
- ruby - 是否可以通过组合现有的 RSpec 匹配器来创建新的 RSpec 匹配器?
- android - 任务执行异常:应用程序:transformClassesWithDexForDebug
- cassandra - 在没有 Prometheus 的情况下使用 Cassandra Exporter