Я читал, что Inheritance - это явление «компиляции-времени». Также в другом месте я прочитал, что код суперкласса загружается загрузчиком классов, который я выводил во время выполнения. мне некоторая путаница в отношении характера наследования. В файле класса подкласса содержится фактический скомпилированный код суперкласса или он доступен во время выполнения?Подкласс компиляции в Java
ответ
Так что подумайте, что вы создаете класс, который наследует класс, который включен в 3-й участник банка файл.
для того, чтобы скомпилировать код вам необходимо иметь 3-ий файл партия баночку в пути к классам вашего компилятора.
Для запуска кода вам также понадобится файл jar в пути к классам команды java, запускающей приложение.
Ваш подкласс не содержит код суперкласса, он находится в файлах jar. Скомпилированный класс содержит ссылку на суперкласс. Когда ваш класс загружается загрузчиком классов, он ищет путь класса для суперкласса и загружает его.
Я думаю, что ваш ответ может поразить его путаницу лучше, но я думаю, что он спотыкается о том, что это либо предложение, либо его предложение, когда это не так. Это и то, и другое. Это необходимо во время компиляции для компиляции и необходимости во время выполнения, чтобы быть загруженным и связанным. – lscoughlin
@lscoughlin Согласен. Я не думаю о таких языковых концепциях, как компиляция или время выполнения. – mikea
Благодаря вам и @Iscoughlin, это очищает мои сомнения ... @ Iscoughlin прав, мне было интересно, является ли это его или предложение, ваш комментарий очищает воздух. –
Где вы прочли это время компиляции? Я думаю, если вы компилируете свой подкласс, то да, он должен иметь надкласс для ссылки при компиляции.
Но когда вы на самом деле выполнения кода она динамически связана в соответствии с:
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html
«Виртуальная машина Java динамически загружает, ссылки и инициализирует классы и интерфейсы»
http://www.cs.utexas.edu/users/lavender/courses/tutorial/java-06.pdf Я прочитал его в этом PDF-файле в первой строке. Это увеличило мою путаницу. –
«Я прочитал. .. ": Можете ли вы предоставить ссылку? –
http://www.cs.utexas.edu/users/lavender/courses/tutorial/java-06.pdf –
Я понимаю, почему это увеличило ваше замешательство. Как указывают другие ответы, наследование имеет значение как во время компиляции, так и во время выполнения. Это предложение неверно. –