Nielen Delphi má ten problém teraz som ten istý kód skúsil v C# a funguje to tam úplne rovnako(nelogicky) ako v Delfách, a predpokladám že to bude rovnaké aj v Jave.
public class Class1
{
private string attrib1;
protected string Property1 {
get {
return attrib1;
}
set {
attrib1 = value;
}
}
}
public class Class2: Class1
{
public string Property1 {
get {
return base.Property1;
}
set {
base.Property1 = value;
}
}
}
public class Class3: Class2
{
protected string Property1 {
get {
return base.Property1;
}
set {
base.Property1 = value;
}
}
}
...
Class3 object1 = new Class3();
object1.Property1 = "Test";
MessageBox.Show(object1.Property1);
Inak v Delphi funguje zapúzdrenie naozaj zvláštne napr. z triedy "A" sa dá pristupovať do private a protected časti triedy "B" ak sú umiestnené v tej istej unite atd. Niečo ako spriatelené triedy v C++. Ešte že do Delphi pre .NET už pribudali aj špecifikátory strict private a strict protected.