Ответы:
Да, оно может. Однако для каждого файла может быть только один общедоступный класс верхнего уровня.java
, а общедоступные классы верхнего уровня должны иметь то же имя, что и исходный файл.
Цель включения нескольких классов в один исходный файл - связать связанные функции поддержки (внутренние структуры данных, классы поддержки и т. Д.) Вместе с основным общедоступным классом. Обратите внимание, что всегда нормально не делать этого - единственное влияние на читаемость (или нет) вашего кода.
java.awt.LightweightDispatcher
?
Если вы хотите реализовать общедоступный класс, вы должны реализовать его в файле с тем же именем, что и этот класс. Один файл может содержать один общедоступный и, возможно, несколько частных классов. Это полезно, если классы используются только внутренним классом. Кроме того, открытый класс может также содержать внутренние классы.
Хотя наличие одного или нескольких частных классов в одном исходном файле - это нормально, я бы сказал, что лучше использовать внутренние и анонимные классы. Например, можно использовать анонимный класс для определения класса Comparator внутри общедоступного класса:
public static Comparator MyComparator = new Comparator() {
public int compare(Object obj, Object anotherObj) {
}
};
Класс Comparator обычно требует отдельного файла, чтобы быть общедоступным. Таким образом, он связан с классом, который его использует.
Файл .java называется единицей компиляции. Каждая единица компиляции может содержать любое количество классов и интерфейсов верхнего уровня. Если нет общедоступных типов верхнего уровня, то единицу компиляции можно назвать как угодно.
//Multiple.java
//preceding package and import statements
class MyClass{...}
interface Service{...}
...
//No public classes or interfaces
...
В модуле компиляции может быть только один общедоступный класс / интерфейс. Cu должен называться именно так, как этот общедоступный тип верхнего уровня.
//Test.java
//named exactly as the public class Test
public class Test{...}
//!public class Operations{...}
interface Selector{...}
...
//Other non-public classes/interfaces
Важные моменты об основном методе - часть 1
(Пункты, касающиеся количества классов и их уровней доступа, рассмотренных в части 2)
Помимо анонимных внутренних классов, другое использование - частные внутренние классы, реализующие общедоступный интерфейс ( см. Эту статью ). Внешний класс может получить доступ ко всем закрытым полям и методам внутреннего класса.
Это позволяет вам создать два тесно связанных класса, например модель и ее представление, не раскрывая их реализации. Другой пример - коллекция и ее итераторы.
Как правило, для каждого файла должен быть один класс. Если вы организовываете вещи таким образом, то при поиске класса вы знаете, что вам нужно только найти файл с этим именем.
Исключение составляют случаи, когда класс лучше всего реализовать с использованием одного или нескольких небольших вспомогательных классов. Обычно за кодом легче всего следовать, когда эти классы присутствуют в одном файле. Например, вам может понадобиться небольшой класс-оболочка «кортеж» для передачи некоторых данных между вызовами методов. Другой пример - классы «задачи», реализующие Runnable или Callable. Они могут быть настолько маленькими, что их лучше всего комбинировать с родительским классом, создающим и вызывающим их.
Да 200% ,
Пример:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
Да, может, но внутри любого пакета может быть только 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 может быть только один общедоступный класс, так как общедоступные классы должны иметь то же имя, что и исходный файл.