저는 D로 시작하는 C++ 프로그래머로서 D 클래스에 대한 액세스 한정자를 이해하는 데 어려움을 겪고 있습니다. 다음의 예를 생각해D 클래스의 공용, 개인 및 보호 된 액세스 한정자
import std.stdio;
class Foo {
private void aPrivateMethod()
{
writeln("called aPrivateMethod");
}
protected void aProtectedMethod()
{
writeln("called aProtectedMethod");
}
public void aPublicMethod()
{
this.aPrivateMethod();
this.aProtectedMethod();
}
}
void main(string[] args)
{
Foo foo = new Foo();
foo.aPublicMethod(); // OK to call it from anywhere
foo.aPrivateMethod(); // Must not be allowed to call it outside Foo
foo.aProtectedMethod(); // Should only be callable from within Foo and derived classes
}
내가 그것을 외부 함수에서 클래스 Foo
의 개인 보호 메소드를 호출하기 때문에 앞의 코드는 컴파일에 실패 할 것으로 예상됩니다. 그러나 위의 예는 DMD v2.063.2에서 오류나 경고없이 컴파일되고 실행되기 때문에 그렇지 않습니다. 분명히 키워드는 C++과는 다른 의미를 갖습니다.
내 질문은 : 질문 만 클래스가 액세스 할 수 있도록
1) 어떻게 수업 방법 및/또는 변수 개인을 할 수 있습니다.
2) 문제의 클래스와 파생 클래스 만 액세스 할 수 있도록 메소드 및/또는 변수를 보호하는 방법.
참조 http://stackoverflow.com/questions/8393372/where-can-i-read-more-about-ds-class-access-modifiers/8393430#8393430 –