Это происходит как новый и отдельный Child
объект, созданный, когда вы сделали Child c1 = new Child();
, который наследует свойство name
от родительского класса Parent
, унаследованное свойство которого name
не установлено и равно null
.p1
в main
- это совершенно другой экземпляр, значения которого не используются совместно с экземпляром c1
.
Использование getName () вместо super.getName () в дочернем классе.
Обе они приведут к null
, поскольку name
наследуется от родительского класса Parent
и не инициализируется.Объект Parent
, который вы инициализировали в методе main
, является совершенно другим экземпляром, свойства которого не упоминаются экземпляром child
в методе input
.
Using Parent p2= новый родитель ();а затем p2.getName () в дочернем классе.
Снова вы создаете отдельный экземпляр Parent
, и поскольку вы не инициализировали значение name
экземпляра p2
p2.getName()
вернет ноль.
Использование защищенного строкового имени;в родительском классе.
protected
просто является модификатором доступа, он не поможет вам инициализировать свойство name
, унаследованное от класса Parent
.
Вот это визуально: