2016-12-11 6 views
0

Я искал интернет, чтобы понять концепцию базового класса и производного класса. У меня вопрос о том, содержит ли производный класс все переменные и методы базового класса или производного класса, просто ссылается на переменные и методы базового класса.Понимание базового класса Java и производного класса

Когда я расширяю класс из базового класса и создаю объект производного класса, выполняет ли объект производного класса контейнер, содержащий объект класса Base + его собственные переменные и методы? Является ли объект класса Base скопированным inline? Когда я вызываю метод супер класса super.setValues ​​(10,20), он вызывает класс Super, задает значения и копирует их значение inline?

Я запутался во внутренней работе кода? Может кто-нибудь объяснить?

Благодаря Гаури

+0

Основанные и полученные чаще используются для C#, но java больше похожа на родительский класс и класс –

+2

Лучше читать книгу – GurV

ответ

0

Как я понимаю это, идя до самого низкого уровня, когда экземпляр производного класса в статический типизированных языках, она хранится в памяти с родительским классом разделителей в памяти от дочернего класса , Когда вы обращаетесь к экземпляру, в зависимости от того, какой тип вы его получите, он будет обращаться к той же области памяти, что и вся область памяти экземпляра или только область базовой части памяти. Однако методы базового класса будут указывать на производный класс в случае, если они переопределены в производных классах.

Это не очень хороший ответ, так оно и было сохранено в моей памяти при работе в средах ООП.

В любом случае есть тонны литературы по этому вопросу, которые могут помочь вам уточнить ООП лучше, чем я когда-либо мог, в ответ SO.

0

Когда вы расширяете класс, производный класс фактически наследует методы из базового класса. Объект производного класса содержит все методы и переменные производного класса и суперкласса. Но если любые методы переопределены, объект производного класса ссылается к переопределенному методу. Это означает, что первый приоритет относится к производному классу. Если компилятор не находит этот метод в производном классе, он проверяет его в базовом классе.

super.setValues ​​(10,20) вызывает метод суперкласса, так как вы использовали супер ключевое слово. Если вы используете его без супер-ключевого слова, он сначала проверяет производный класс.

Смежные вопросы