Hey Leute,
ich habe eine Frage bezüglich Zugriffsmodifikatoren einer Basisklasse.
Ein Beispiel:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class A
{
protected int i {get; set;}
(<neuer Zugriffsmodifikator>) string text {get; set;}
}
public class B : A
{
public B() : base(A)
{
i = 10;
text = "hallo"; //Compilierfehler, text ist in abgeleiteten Klassen nicht sichtbar
}
}
class Program
{
static void Main()
{
A a = new A();
a.text = "moin"; // das darf funktionieren
B b = new B();
b.text = ???? // die Eigenschaft text sollte garnicht in intelisense angezeigt werden, aufgrund des neuen Zugriffsmodifikators
}
}
|
Meine Frage ist jetzt, wieso gibt es kein Schlüsselwort, was besagt, das diese Variable nur dann sichtbar ist, wenn klasse A instanziiert wird.
also die variable i ist
nur in B und A sichtbar, aber die Variable text soll
nicht in B sichtbar sein, aber wenn klasse A instanziiert wird und mann über intelisense auf text zugreifen möchte, dann ist es sichtbar.
Gibt es evtl. ein solches Schlüsselwort oder würde dieses keinen Sinn machen?
persönlich fände ich es schon sinnvoll, denn ich möchte A gerne vererben, dennoch A aber weil es nicht so abstrakt ist, auch instanziieren.
und einige Daten die B von A benötigt, hat B auch, wiederum Daten die
nur A haben sollte, sind in B nicht sichtbar, egal ob man B instanziieren möchte oder nur privat in B verwenden will, sie sollten B garnicht zu verfügung stehen.
Ich bin über eure Meinungen gespannt
Mfg
JungleProgger