Почему я не могу обращаться к методам через класс?
есть класс A у которого гетеры приватных полей, например public int getX() {retutn this.x} . Когда я из класса B обращаюсь к методу getX() через класс А то есть А.getX() то выходит ошибка а когда объявляю переменную типа класса А a то компилятор уже видит метод через а.getX().
1. Объясните пожалуйста в чем здесь прикол.
2. Объявление переменных типо object могут хранятся в куче до инициализации ?
maaGames Спасибо я уже понял ) И еще не скажете в чем разница между объявленным типом object например Author at и и созданием типа object Author at = new Athor () относительно памяти. То есть как первая переменная представляется в памяти в куче Java относительно второй ?
have_a_questions: Объявление переменной, а не типа. В Си/С++ это было бы создание переменной в стеке, в java в стеке только примитивные типы создавать можно, а классы только в куче. Так что относительно памяти, первая запись это не инициализированный "указатель", а вторая запись это создание реального объекта по "указателю". Это если в терминологии крутых языков программирования говорить.)
Виктор Да, я обращаюсь к методу не создав объект. Но опять же мне интересно почему через класс я не могу обращаться к методу а через переменную этого класса не проинициализированную доступ к методу есть.
Виктор: Ну я только объявил переменную а не создал его в куче ) То есть через класс я могу достучатся к статическим переменным а для иных мне нужно объявить переменную ?
have_a_questions: Из написанного мне сложно предположить где и чем у вас инициализируется переменная this.x. Надо код в комплексе смотреть. А за мной уже приехал личный шофер...
Denis Zagayevskiy: знаю сильно сказано, просто изучал структуру jvm а ооп не везде понимаю как работает. Вот в чем разница между объявленным типом object например Author at и и созданием типа object Author at = new Athor () относительно памяти. То есть как первая переменная представляется в памяти в куче Java относительно второй ?
Denis Zagayevskiy: хорошо тогда а почему я не могу обращаться к полям типа public через класс а только через объявление переменную хотя объявление переменной не создает объект ни в куче ни в стеке