Может ли файл Java иметь более одного класса? - PullRequest
100 голосов
/ 09 июня 2009

Какова цель иметь более одного класса в файле Java? Я новичок в Java.

Отредактировано: Этого можно достичь, создав внутренний класс внутри публичного класса, верно?

Ответы [ 17 ]

1 голос
/ 05 марта 2017

Да, в файле .java может быть несколько классов. Максимум один из них может быть публичным. Другие являются частными. Они не могут быть частными или защищенными. Если один из них публичный, файл должен иметь имя этого класса. В противном случае НИЧЕГО можно дать этому файлу в качестве его имени.

Наличие множества классов внутри одного файла означает, что эти классы находятся в одном пакете. Поэтому любые другие классы, которые находятся внутри этого пакета, но не в этом файле, также могут использовать эти классы. Более того, когда этот пакет импортируется, импортирующий класс может также использовать их.

Для более подробного расследования, вы можете посетить мой блог в здесь .

1 голос
/ 03 января 2017

Да! Файл .java может содержать только один открытый класс.

Если вы хотите, чтобы эти два класса были общедоступными, их нужно поместить в два файла .java: A.java и B.java.

1 голос
/ 29 декабря 2016

Да. Вы можете иметь более одного класса в одном файле .Java. Но Ты должен сделать одного из них Публичным. и сохраните файл .java с тем же именем, что и имя публичного класса. когда вы скомпилируете этот файл .java, вы получите отдельные файлы .class для каждого класса, определенного в файле .java.

Кроме этого, существует слишком много методов для определения более одного класса в одном файле .java.

  1. используйте концепцию внутренних классов.
  2. Использование концепции анонимных классов.
1 голос
/ 15 августа 2016

В файле .java может быть только один открытый класс верхнего уровня, имя которого совпадает с именем файла, но может быть несколько открытых внутренних классов, которые можно экспортировать всем и получить доступ к полям / методам внешнего класса , например: AlertDialog.Builder (изменен с помощью «public static») в AlertDialog (изменен с «public»)

1 голос
/ 26 декабря 2015

Если вы хотите реализовать синглтон, то есть класс, который запускается в вашей программе с одним экземпляром в памяти во время выполнения приложения, то один из способов реализовать синглтон - это вложить частный статический класс внутрь публичный класс. Тогда внутренний закрытый класс создается только при вызове его открытого метода для доступа к закрытому экземпляру.

Ознакомьтесь с этой статьей вики,

https://en.wikipedia.org/wiki/Singleton_pattern

Концепция требует времени, чтобы пережевать.

1 голос
/ 09 июня 2009

Зависит ... Одним из таких примеров могут быть анонимные классы (вы часто сталкиваетесь с ними при использовании прослушивателей событий и т. Д.).

0 голосов
/ 16 октября 2017

В файле может быть только один открытый класс верхнего уровня . Имя класса этого открытого класса должно быть именем файла. У него может быть много открытых внутренних классов.

Вы можете иметь много классов в одном файле. Пределы для различных уровней видимости класса в файле следующие:

Классы высшего уровня:
1 публичный класс
0 закрытый класс
любое количество классов по умолчанию / защищенных

Внутренние классы:
любое количество внутренних классов с любой видимостью (по умолчанию, закрытый, защищенный, общедоступный)

Пожалуйста, поправьте меня, если я ошибаюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...