![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Reptor |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1213 Регистрация: 29.12.2004 Репутация: нет Всего: 0 |
Подскажите как мне в одном файле сделать несколько классов? ведь имя файла должно совпадать с именем класса.
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Имя одного класса дложно совпадать с именем файла, а другие классы объявить внутри него (вложенные классы). Но class-файлов после компиляции будет столько, сколько было классов.
|
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
Это когда класс объявлен как public. Иначе никаких проблем! Пример файла Server.java
Добавлено через 34 секунды да, так буден создано несколько .class файлов из одного .java |
|||
|
||||
| Reptor |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1213 Регистрация: 29.12.2004 Репутация: нет Всего: 0 |
Ну в этом ведь нечего страшного нет?
Тоесть если я зделаю так
то я файл могу назвать как угодно? |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Да. Но эти классы будут доступны только внутри твоего package-а. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chand0s |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 19.2.2007 Репутация: 1 Всего: 3 |
Нет. В файле обязательно должен быть ОДИН public класс, имя которого должно совпадать с именем файла и сколько угодно классов с доступом по-умолчанию, то есть - без модификаторов. Добавлено @ 14:32
Ваша правда. Сейчас проверил - действительно допускается иметь файл без public класса. Спасибо. Это сообщение отредактировал(а) chand0s - 26.7.2007, 14:32 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
В одном java-файле можно разместить несколько обычных классов, но пользоваться этой возможностью не следует (только если выделить пример из форума, вставить в один файл и откомпилировать). Иначе если удалить все class-файлы и запустить javac *.java, можно получить ошибку компиляции "нет такого класса" при неправильном порядке компиляции.
Эта возможность была введена в java 1.0 когда не было вложенных классов. Теперь нужно использовать вложенные классы, |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Главное, чтобы файл имел такое же имя как класс(где есть Main()), а остальные классы можно называть как угодно
|
|||
|
||||
| Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если у вас есть файл A.java и в нём [public] class A и class B. Компилируете. Получаете A.class и B.class. OK.
Пишете class С, использующий B. Компилируете. Компирятор находит class B в В.class. OK. Добавляете новый метод f() в class B. Вызываете его из class C. Запускаете class C на компиляцию. Компилатор находит старый B.class, не находит на него нового исходника и выдает ошибку "нет метода f() в классе B". Если бы class B находился в B.java, компилятор бы его перекомпилировал. Если [static] class B вложен в класс A, то он компилируется в A$B.class, и компирятор знает, что исходники на него нужно искать в A.java. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Классы верхнего уровня могут иметь или модификатор public, или модификатор по умолчанию, внутренние классы могут иметь любой модификатор доступа. Классы верхнего уровня, должны быть объявлены в файле имя которого совпадает с именем класса.
Метод public static void main(String[] args) может содержать любой класс, даже приватный:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
Прошу прощение, за не допонимание, имелось в виду, что в Java имя исходного файла, должно совпадать с названием класса. В Java исходный файл называют единицей компиляции Это текстовый файл, который содержит одно или несколько определений классов. Компилятор требует, чтобы исходный файл использовал расширение .java. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |