Да, оно может. Однако для каждого файла может быть только один общедоступный класс верхнего уровня.java , а общедоступные классы верхнего уровня должны иметь то же имя, что и исходный файл.
Цель включения нескольких классов в один исходный файл - связать связанные функции поддержки (внутренние структуры данных, классы поддержки и т. Д.) Вместе с основным общедоступным классом. Обратите внимание, что всегда нормально не делать этого - единственное влияние на читаемость (или нет) вашего кода.
Я думаю, что это хорошая идея, если вы хотите сохранить эти дополнительные классы закрытыми, чтобы их можно было полностью изменить позже, не нарушая ничего, что случайно использует эти классы.
Эрих Китцмюллер,
3
Он существует для совместимости с 1.0 (до вложенных классов). Это большая ошибка в языке. Самым большим преимуществом его использования является безнадежная обработка файлов в IDE.
Том Хотин - tackline
25
Один общедоступный класс верхнего уровня для каждого файла. Для каждого файла может быть столько публичных внутренних классов, сколько вам нужно.
erickson 09
@Tom, какая часть, по вашему мнению, является ошибкой, внутренние классы или несколько классов верхнего уровня для каждого файла?
finnw
@finnw Несколько классов верхнего уровня для каждого файла. Это так неправильно. Где java.awt.LightweightDispatcher?
Том Хотин - tackline
17
Если вы хотите реализовать общедоступный класс, вы должны реализовать его в файле с тем же именем, что и этот класс. Один файл может содержать один общедоступный и, возможно, несколько частных классов. Это полезно, если классы используются только внутренним классом. Кроме того, открытый класс может также содержать внутренние классы.
Хотя наличие одного или нескольких частных классов в одном исходном файле - это нормально, я бы сказал, что лучше использовать внутренние и анонимные классы. Например, можно использовать анонимный класс для определения класса Comparator внутри общедоступного класса:
Это не совсем частный класс, если он находится в файле без модификатора. У вас не может быть частного класса, если он не является внутренним классом, потому что если бы вы это сделали, кто бы мог его использовать?
Файл .java называется единицей компиляции. Каждая единица компиляции может содержать любое количество классов и интерфейсов верхнего уровня. Если нет общедоступных типов верхнего уровня, то единицу компиляции можно назвать как угодно.
//Multiple.java//preceding package and import statementsclassMyClass{...}interfaceService{...}...//No public classes or interfaces...
В модуле компиляции может быть только один общедоступный класс / интерфейс. Cu должен называться именно так, как этот общедоступный тип верхнего уровня.
//Test.java//named exactly as the public class TestpublicclassTest{...}//!public class Operations{...}interfaceSelector{...}...//Other non-public classes/interfaces
Помимо анонимных внутренних классов, другое использование - частные внутренние классы, реализующие общедоступный интерфейс ( см. Эту статью ). Внешний класс может получить доступ ко всем закрытым полям и методам внутреннего класса.
Это позволяет вам создать два тесно связанных класса, например модель и ее представление, не раскрывая их реализации. Другой пример - коллекция и ее итераторы.
Как правило, для каждого файла должен быть один класс. Если вы организовываете вещи таким образом, то при поиске класса вы знаете, что вам нужно только найти файл с этим именем.
Исключение составляют случаи, когда класс лучше всего реализовать с использованием одного или нескольких небольших вспомогательных классов. Обычно за кодом легче всего следовать, когда эти классы присутствуют в одном файле. Например, вам может понадобиться небольшой класс-оболочка «кортеж» для передачи некоторых данных между вызовами методов. Другой пример - классы «задачи», реализующие Runnable или Callable. Они могут быть настолько маленькими, что их лучше всего комбинировать с родительским классом, создающим и вызывающим их.
Да, может, но внутри любого пакета может быть только 1 общедоступный класс, поскольку компилятор java создает файл .Class с тем же именем, что и имя общедоступного класса, поэтому, если их более 1 общедоступного класса, было бы трудно выбрать для компилятор, что должно быть именем файла класса.
Вам следует задать это как вопрос, а не отвечать здесь.
Ашиш Кумар
1
Если вы хотите реализовать синглтон, то есть класс, который запускается в вашей программе только с одним экземпляром в памяти на протяжении всего выполнения приложения, то один из способов реализации синглтона - вложить частный статический класс в общедоступный класс. . Затем внутренний частный класс создает экземпляр только тогда, когда вызывается его открытый метод доступа к частному экземпляру.
В файле .java может быть только один общедоступный класс верхнего уровня, имя которого совпадает с именем файла, но может быть несколько общедоступных внутренних классов, которые можно экспортировать для всех и получить доступ к полям / методам внешнего класса, например : AlertDialog.Builder (изменено "public static") в AlertDialog (изменено "public")
Да. В одном файле .Java может быть более одного класса. Но вы должны сделать одну из них общедоступной. и сохраните файл .java с тем же именем, что и имя публичного класса. когда вы скомпилируете этот файл .java, вы получите отдельные файлы .class для каждого класса, определенного в файле .java.
Кроме того, существует слишком много методов для определения более одного класса в одном файле .java.
Я не уверен, что ваш ответ добавляет что-нибудь еще из 12 других ответов
goto
1
Да, внутри файла .java может быть более одного класса. Максимум один из них может быть публичным. Остальные являются частными пакетами. Они НЕ МОГУТ быть частными или защищенными. Если один из них является общедоступным, файл должен иметь имя этого класса. В противном случае этому файлу может быть присвоено ВСЕ ЧТО.
Наличие множества классов внутри одного файла означает, что эти классы находятся в одном пакете. Таким образом, любые другие классы, которые находятся внутри этого пакета, но не в этом файле, также могут использовать эти классы. Более того, когда этот пакет импортируется, импортирующий класс также может их использовать.
Для более подробного расследования вы можете посетить мою запись в блоге здесь .
Добро пожаловать в Stack Overflow! Я ценю, что вы изложили информацию, которая здесь еще не была раскрыта. Вы также хорошо процитировали свое сообщение в блоге, заявив о праве собственности и включив сюда соответствующую информацию. Если вы решите вносить больший вклад в этот сайт в будущем (а я надеюсь, что вы это сделаете), обязательно прочтите эту статью, чтобы убедиться, что ваши сообщения и дальше будут хорошо приниматься, если вы цитируете свой блог.
4castle
0
Может быть только один верхний уровень публичного класса файле . Имя класса этого открытого класса должно быть именем файла. У него может быть много общедоступных внутренних классов.
В одном файле может быть много классов. Ограничения для различных уровней видимости классов в файле следующие:
Классы верхнего уровня:
1 публичный класс
0 частный класс
любое количество классов по умолчанию / защищенных
Внутренние классы:
любое количество внутренних классов с любой видимостью (по умолчанию, частные, защищенные, общедоступные)
Да, оно может. Однако для каждого файла .java может быть только один общедоступный класс, так как общедоступные классы должны иметь то же имя, что и исходный файл.
Ответы:
Да, оно может. Однако для каждого файла может быть только один общедоступный класс верхнего уровня
.java
, а общедоступные классы верхнего уровня должны иметь то же имя, что и исходный файл.Цель включения нескольких классов в один исходный файл - связать связанные функции поддержки (внутренние структуры данных, классы поддержки и т. Д.) Вместе с основным общедоступным классом. Обратите внимание, что всегда нормально не делать этого - единственное влияние на читаемость (или нет) вашего кода.
источник
java.awt.LightweightDispatcher
?Если вы хотите реализовать общедоступный класс, вы должны реализовать его в файле с тем же именем, что и этот класс. Один файл может содержать один общедоступный и, возможно, несколько частных классов. Это полезно, если классы используются только внутренним классом. Кроме того, открытый класс может также содержать внутренние классы.
Хотя наличие одного или нескольких частных классов в одном исходном файле - это нормально, я бы сказал, что лучше использовать внутренние и анонимные классы. Например, можно использовать анонимный класс для определения класса Comparator внутри общедоступного класса:
Класс Comparator обычно требует отдельного файла, чтобы быть общедоступным. Таким образом, он связан с классом, который его использует.
источник
Да сколько угодно!
НО, только один «публичный» класс в каждом файле.
источник
Файл .java называется единицей компиляции. Каждая единица компиляции может содержать любое количество классов и интерфейсов верхнего уровня. Если нет общедоступных типов верхнего уровня, то единицу компиляции можно назвать как угодно.
В модуле компиляции может быть только один общедоступный класс / интерфейс. Cu должен называться именно так, как этот общедоступный тип верхнего уровня.
Важные моменты об основном методе - часть 1
Часть 2
(Пункты, касающиеся количества классов и их уровней доступа, рассмотренных в части 2)
источник
Да, вы можете создать более одного общедоступного класса, но это должен быть вложенный класс.
источник
Помимо анонимных внутренних классов, другое использование - частные внутренние классы, реализующие общедоступный интерфейс ( см. Эту статью ). Внешний класс может получить доступ ко всем закрытым полям и методам внутреннего класса.
Это позволяет вам создать два тесно связанных класса, например модель и ее представление, не раскрывая их реализации. Другой пример - коллекция и ее итераторы.
источник
Как правило, для каждого файла должен быть один класс. Если вы организовываете вещи таким образом, то при поиске класса вы знаете, что вам нужно только найти файл с этим именем.
Исключение составляют случаи, когда класс лучше всего реализовать с использованием одного или нескольких небольших вспомогательных классов. Обычно за кодом легче всего следовать, когда эти классы присутствуют в одном файле. Например, вам может понадобиться небольшой класс-оболочка «кортеж» для передачи некоторых данных между вызовами методов. Другой пример - классы «задачи», реализующие Runnable или Callable. Они могут быть настолько маленькими, что их лучше всего комбинировать с родительским классом, создающим и вызывающим их.
источник
Да 200% ,
Пример:
источник
Да, может, но внутри любого пакета может быть только 1 общедоступный класс, поскольку компилятор java создает файл .Class с тем же именем, что и имя общедоступного класса, поэтому, если их более 1 общедоступного класса, было бы трудно выбрать для компилятор, что должно быть именем файла класса.
источник
Варьируется ... Одним из таких примеров могут быть анонимные классы (вы встретите их много при использовании прослушивателей событий и т. Д.).
источник
Я думаю, что это должно быть «в каждом файле .java может быть только один НЕСТАТИЧЕСКИЙ публичный класс верхнего уровня». Не так ли?
источник
Если вы хотите реализовать синглтон, то есть класс, который запускается в вашей программе только с одним экземпляром в памяти на протяжении всего выполнения приложения, то один из способов реализации синглтона - вложить частный статический класс в общедоступный класс. . Затем внутренний частный класс создает экземпляр только тогда, когда вызывается его открытый метод доступа к частному экземпляру.
Прочтите эту статью в вики,
https://en.wikipedia.org/wiki/Singleton_pattern
На осмысление концепции нужно время.
источник
В файле .java может быть только один общедоступный класс верхнего уровня, имя которого совпадает с именем файла, но может быть несколько общедоступных внутренних классов, которые можно экспортировать для всех и получить доступ к полям / методам внешнего класса, например : AlertDialog.Builder (изменено "public static") в AlertDialog (изменено "public")
источник
Да. В одном файле .Java может быть более одного класса. Но вы должны сделать одну из них общедоступной. и сохраните файл .java с тем же именем, что и имя публичного класса. когда вы скомпилируете этот файл .java, вы получите отдельные файлы .class для каждого класса, определенного в файле .java.
Кроме того, существует слишком много методов для определения более одного класса в одном файле .java.
источник
Да ! .java файл может содержать только один публичный класс.
Если вы хотите, чтобы эти два класса были общедоступными, их нужно поместить в два файла .java: A.java и B.java.
источник
Да, внутри файла .java может быть более одного класса. Максимум один из них может быть публичным. Остальные являются частными пакетами. Они НЕ МОГУТ быть частными или защищенными. Если один из них является общедоступным, файл должен иметь имя этого класса. В противном случае этому файлу может быть присвоено ВСЕ ЧТО.
Наличие множества классов внутри одного файла означает, что эти классы находятся в одном пакете. Таким образом, любые другие классы, которые находятся внутри этого пакета, но не в этом файле, также могут использовать эти классы. Более того, когда этот пакет импортируется, импортирующий класс также может их использовать.
Для более подробного расследования вы можете посетить мою запись в блоге здесь .
источник
Может быть только один верхний уровень публичного класса файле . Имя класса этого открытого класса должно быть именем файла. У него может быть много общедоступных внутренних классов.
В одном файле может быть много классов. Ограничения для различных уровней видимости классов в файле следующие:
Классы верхнего уровня:
1 публичный класс
0 частный класс
любое количество классов по умолчанию / защищенных
Внутренние классы:
любое количество внутренних классов с любой видимостью (по умолчанию, частные, защищенные, общедоступные)
Пожалуйста, поправьте меня, если я ошибаюсь.
источник
Да, оно может. Однако для каждого файла .java может быть только один общедоступный класс, так как общедоступные классы должны иметь то же имя, что и исходный файл.
источник