首页 > 解决方案 > 为什么在这里可以访问类中的私有变量?

问题描述

我刚刚开始使用 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 访问。如果它们在类中被声明为私有,它们是否应该不可访问?

标签: oopd

解决方案


参见“D Lang”维基:

“私有意味着只有封闭类的成员才能访问该成员,或者与封闭类在同一模块中的成员和函数。私有成员不能被覆盖。”

https://wiki.dlang.org/Access_specifiers_and_visibility

由于您与封闭类位于同一模块中,因此这是允许的。


推荐阅读