Этот тип зависит от вашего точного использования слова наследования.Я объясню на примере.
Предположим, у вас есть два класса: Parent
и Child
, где Child
расширяется Parent
.Кроме того, Parent
имеет личное целое число с именем value
.
Теперь возникает вопрос: наследует ли Child
частное value
?В Java наследование определяется таким образом, что ответом будет «Нет».Тем не менее, в общем ООП-жаргоне, есть небольшая неоднозначность.
Вы могли бы сказать, что это не унаследовано, потому что нигде Child
не может явно обратиться к value
.Т.е. любой код, такой как this.value
, не может использоваться в Child
, и obj.value
не может использоваться из некоторого вызывающего кода (очевидно).
Однако, в другом смысле, вы можете сказать, что value
наследуется .Если вы считаете, что каждый экземпляр Child
также является экземпляром Parent
, то этот объект должен содержать value
, как определено в Parent
.Даже если класс Child
ничего не знает об этом, закрытый член с именем value
все еще существует в каждом экземпляре Child
.Таким образом, в этом смысле вы можете сказать, что value
наследуется в Child
.
Поэтому, не используя слово «наследование», просто помните, что дочерние классы не знают о закрытых членах, определенных в родительских классах.,Но также помните, что эти закрытые члены все еще существуют в экземплярах дочернего класса.