我有以下类层次结构
public class Third : Second
{
}
public class Second : First
{
}
public class First
{
private int MyVariable;
}
如果我想从Second和Third访问MyVariable,我可以使MyVariable受到保护,但如果我想从Second而不是Third进行访问会怎样。这可能吗?
答案 0 :(得分:13)
如果我想从
MyVariable
和Second
访问Third
,我可以MyVariable
受到保护。如果我想从Second
但不是Third
访问该怎么办?这可能吗?
是的!这是一种技巧:
class First
{
private int myVariable;
public class Second : First
{
public Second() { myVariable = 123; } // Legal!
}
}
class Third : First.Second
{
public Third() { myVariable = 456; } // Illegal!
}
这是另一个:
// Alpha.DLL
public class First
{
internal int myVariable;
}
public class Second : First
{
public Second() { myVariable = 123; } // Legal!
}
// Bravo.DLL
class Third : Second
{
public Third() { myVariable = 456; } // Illegal!
}
答案 1 :(得分:8)
你不是以面向对象的方式思考这个问题。
您声明每个Third
都是Second
。但是您希望每个Second
都可以访问该变量,但您不希望任何Third
具有访问权限。
但如果Third
无权访问,那么它不是Second
!