Также, если вы используете сторонние библиотеки, убедитесь, что у вас есть правильные 32/64 битные файлы
Это все о Java inheritance
и overriding
. method()
в родительском классе будет переопределяться по методу child.
System.out.println(((Child) p).x);// here you are invoking child
Затем вы получите атрибуты ребенка.
И следующий - все о полиморфизме Java.
((Child) p).x // invoking object type, x=4 (object is child )
p.x // invoking reference type, x=5 (reference is parent)
, что наследуется?
blockquote>Все общедоступные и защищенные методы наследуются в подклассе.
где в ячейке памяти?
blockquote>Я написал сообщение в блоге об объекте создания объекта в Java. Я думаю, вы поймете это лучше.
почему первое syso дает 4 и второе дает 5?
blockquote>Доступ к полям всегда разрешается на основе объявленного тип ссылки, а не фактический тип объекта. Таким образом,
p.x
получит доступ к полюParent
, поскольку объявленный типp
равенParent
. Принимая во внимание, что((Child)p).x
будет получать доступ к полюChild
, поскольку у вас есть тип, отбрасывающий ссылкуp
наChild
, и теперь рассматриваемый тип считаетсяChild
.
В Java нет переопределения переменных и только переопределения метода.
System.out.println(((Child) p).x);
Эта строка указывает точку p
на Child
и получает эту переменную x
.
Строка, System.out.println(p.x);
указывает, что печать Parent
x