Ainsi, il semble que vous demandiez ce qui suit. Vous avez
class Parent {
public SomeType ParentProperty { get; set; }
}
class Child : Parent { }
et que vous voulez cacher SomeProperty
d'être visible dans les cas de Child
.
Ne faites pas ça! Ne pas masquer les propriétés de la classe de base qui sont visibles. Tout d'abord, il est facile de se déplacer:
Parent p = new Child();
p.ParentProperty; // oops!
En second lieu, il est une violation énorme de la Liskov substitution principle. Fondamentalement, le principe dit que tout ce que vous savez être vrai sur toutes les instances de Parent
devrait également être vrai sur toutes les instances de Child
. Ici, nous savons que toutes les instances de Parent
ont une propriété visible appelée ParentProperty
de type SomeType
. Par conséquent, la même chose devrait (morale devrait) être vrai de toutes les instances de Child
.
Pouvez-vous nous dire pourquoi vous voulez faire cela et peut-être que nous pouvons vous suggérer une alternative?
Vous demandez trois langues complètement différentes - dont l'un est vous utilisez réellement? –
Juste eu un second regard sur les balises (j'ai supposé au début que vous vouliez dire des membres), mais C++ (et je suppose Java) n'ont pas de propriétés. – Yacoby
@Yacoby: Oui, Java non plus. – jason