Вам понадобится файл class
, чтобы фактически использовать класс, но это не значит, что вам понадобится исходный файл.
Давайте рассмотрим возможности на примере классов Dog
и Animal
. Предполагая, что класс Dog
является подклассом класса Animal
, мы можем сделать следующее:
Если у вас есть и Animal.class
, и Animal.java
, вы можете создать класс Dog
.
Если у вас есть Animal.class
, но нет Animal.java
, вы можете создать класс Dog
.
Если у вас нет Animal.class
, но есть Animal.java
, вы можете создать класс Dog
. (Это означает, что файл Animal.java
нужно будет компилировать вместе с файлом Dog.java
.)
Если у вас нет ни Animal.class
, ни Animal.java
, вы не можете создать класс Dog
.
Вот табличная версия вышеизложенного:
Have Animal.java? Have Animal.class? Can make Dog class?
----------------- ------------------ -------------------
Yes Yes --> Yes
Yes No --> Yes
No Yes --> Yes
No No --> No
Если у вас есть файл class
, существуют программы, которые могут декомпилировать файл class
для создания удобочитаемого исходного файла java
, однако он не восстановит точный исходный код, который использовался для создания файла class
.
Однако в этом случае, если все, что необходимо, — это расширить класс Animal
, чтобы создать новый класс Dog
, сам исходный код не нужен.
Имейте это в виду — всякий раз, когда класс создается на Java, он всегда расширяет класс Object
. Даже если у нас нет доступа к исходному коду класса Object
, поскольку у нас есть доступ к Object.class
в Java, мы можем создавать свои собственные классы.
Этот случай аналогичен — пока у нас есть файл class
для класса, мы можем использовать его в полной мере. Единственное, чего не хватает, так это фактической реализации, которая указана в исходном коде.
person
coobird
schedule
13.06.2009