2014-02-10 6 views
5

Я читал, что Inheritance - это явление «компиляции-времени». Также в другом месте я прочитал, что код суперкласса загружается загрузчиком классов, который я выводил во время выполнения. мне некоторая путаница в отношении характера наследования. В файле класса подкласса содержится фактический скомпилированный код суперкласса или он доступен во время выполнения?Подкласс компиляции в Java

+0

«Я прочитал. .. ": Можете ли вы предоставить ссылку? –

+0

http://www.cs.utexas.edu/users/lavender/courses/tutorial/java-06.pdf –

+0

Я понимаю, почему это увеличило ваше замешательство. Как указывают другие ответы, наследование имеет значение как во время компиляции, так и во время выполнения. Это предложение неверно. –

ответ

4

Так что подумайте, что вы создаете класс, который наследует класс, который включен в 3-й участник банка файл.

для того, чтобы скомпилировать код вам необходимо иметь 3-ий файл партия баночку в пути к классам вашего компилятора.

Для запуска кода вам также понадобится файл jar в пути к классам команды java, запускающей приложение.

Ваш подкласс не содержит код суперкласса, он находится в файлах jar. Скомпилированный класс содержит ссылку на суперкласс. Когда ваш класс загружается загрузчиком классов, он ищет путь класса для суперкласса и загружает его.

+2

Я думаю, что ваш ответ может поразить его путаницу лучше, но я думаю, что он спотыкается о том, что это либо предложение, либо его предложение, когда это не так. Это и то, и другое. Это необходимо во время компиляции для компиляции и необходимости во время выполнения, чтобы быть загруженным и связанным. – lscoughlin

+0

@lscoughlin Согласен. Я не думаю о таких языковых концепциях, как компиляция или время выполнения. – mikea

+0

Благодаря вам и @Iscoughlin, это очищает мои сомнения ... @ Iscoughlin прав, мне было интересно, является ли это его или предложение, ваш комментарий очищает воздух. –

1

Где вы прочли это время компиляции? Я думаю, если вы компилируете свой подкласс, то да, он должен иметь надкласс для ссылки при компиляции.

Но когда вы на самом деле выполнения кода она динамически связана в соответствии с:

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html

«Виртуальная машина Java динамически загружает, ссылки и инициализирует классы и интерфейсы»

+0

http://www.cs.utexas.edu/users/lavender/courses/tutorial/java-06.pdf Я прочитал его в этом PDF-файле в первой строке. Это увеличило мою путаницу. –

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

  • Нет связанных вопросов^_^