una tipos separados relacionar programas por mismo metodos llamar instanciar está esta escriben ejemplos ejecutar cuántas constituida con como codificacion clases clase auxiliar atributos archivos archivo java class

tipos - ¿Puede un archivo java tener más de una clase?



programas con clases en java (17)

¿Cuál es el propósito de tener más de una clase en un archivo Java? Soy nuevo en Java.

Editado: Eso se puede lograr creando una clase interna dentro de una clase pública, ¿verdad?


¡Sí! El archivo .java puede contener solo una clase pública.

Si desea que estas dos clases sean públicas, deben colocarse en dos archivos .java: A.java y B.java.


Además de las clases internas anónimas, otro uso son las clases internas privadas que implementan una interfaz pública ( consulte este artículo ). La clase externa puede acceder a todos los campos y métodos privados de la clase interna.

Esto le permite crear dos clases estrechamente acopladas, como un modelo y su vista, sin exponer las implementaciones de ninguna. Otro ejemplo es una colección y sus iteradores.


Creo que debería ser "solo puede haber una clase pública de nivel superior NO ESTÁTICA por archivo .java". ¿No es así?


En general, debe haber una clase por archivo. Si organiza las cosas de esa manera, cuando busca una clase, sabe que solo necesita buscar el archivo con ese nombre.

La excepción es cuando una clase se implementa mejor usando una o más clases pequeñas de ayuda. Generalmente, el código es más fácil de seguir cuando esas clases están presentes en el mismo archivo. Por ejemplo, es posible que necesite una pequeña clase de contenedor ''tupla'' para pasar algunos datos entre llamadas a métodos. Otro ejemplo son las clases ''task'' que implementan Runnable o Callable. Pueden ser tan pequeños que se combinan mejor con la clase padre creando y llamándolos.


En un archivo .java, solo puede haber una clase pública de nivel superior cuyo nombre sea el mismo que el archivo, pero puede haber varias clases internas públicas que se pueden exportar a todos y acceder a los campos / métodos de la clase externa, por ejemplo : AlertDialog.Builder (modificado por ''public static'') en AlertDialog (modificado por ''public'')


Sí Puede tener más de una clase en un archivo .Java. Pero usted ha hecho que uno de ellos sea público. y guarde el archivo .java con el mismo nombre que el nombre de la clase pública. cuando compile ese archivo .java, obtendrá los archivos .class separados para cada clase definida en el archivo .java.

Aparte de esto, hay demasiados métodos para definir más de una clase en un archivo .java.

  1. usa el concepto de Clases Internas.
  2. Utilice el concepto de clases anónimas.

Sí, ¡todos los que quieras!

PERO, solo una clase "pública" en cada archivo.


Sí, puede, pero solo puede haber 1 clase pública dentro de cualquier paquete, ya que el compilador Java crea el archivo .Class que tiene el mismo nombre que el nombre de clase pública, por lo tanto, si son más de 1 clase pública, sería difícil seleccionarlo. compilador que debería ser el nombre del archivo Class.


Sí, puedes crear más de una clase pública, pero tiene que ser una clase anidada.

public class first { public static void main(String[] args) { // TODO Auto-generated method stub } public class demo1 { public class demo2 { } } }


Sí, puedes tener más de una clase dentro de un archivo .java. Como máximo, uno de ellos puede ser público. Los otros son paquetes privados. NO PUEDEN ser privados o protegidos. Si uno es público, el archivo debe tener el nombre de esa clase. De lo contrario, se puede dar CUALQUIER COSA a ese archivo como su nombre.

Tener muchas clases dentro de un archivo significa que esas clases están en el mismo paquete. Entonces, cualquier otra clase que esté dentro de ese paquete pero no en ese archivo también puede usar esas clases. Además, cuando se importa ese paquete, la clase de importación puede usarlos también.

Para una investigación más detallada, puedes visitar mi blog here .


Si desea implementar un singleton, que es una clase que se ejecuta en su programa con solo una instancia en la memoria durante la ejecución de la aplicación, una de las formas de implementar un singleton es anidar una clase privada estática dentro de una clase pública . Entonces, la clase privada interna solo se crea una instancia cuando se llama a su método público para acceder a la instancia privada.

Mira este artículo de la wiki,

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

El concepto toma un tiempo para masticar.


Si desea implementar una clase pública, debe implementarla en un archivo con el mismo nombre que esa clase. Un solo archivo puede contener una clase pública y opcionalmente algunas privadas. Esto es útil si las clases solo las usa internamente la clase pública. Además, la clase pública también puede contener clases internas.

Aunque está bien tener una o más clases privadas en un único archivo fuente, diría que es más legible usar clases internas y anónimas. Por ejemplo, uno puede usar una clase anónima para definir una clase de Comparador dentro de una clase pública:

public static Comparator MyComparator = new Comparator() { public int compare(Object obj, Object anotherObj) { } };

La clase Comparator normalmente requerirá un archivo separado para ser pública. De esta forma, se incluye con la clase que lo usa.


Solo puede haber una clase de nivel superior de clase pública en un archivo. El nombre de clase de esa clase pública debe ser el nombre del archivo. Puede tener muchas clases internas públicas.

Puede tener muchas clases en un solo archivo. Los límites para varios niveles de visibilidad de clase en un archivo son los siguientes:

Clases de nivel superior:
1 clase pública
0 clase privada
cualquier cantidad de clases predeterminadas / protegidas

Clases internas:
cualquier cantidad de clases internas con cualquier visibilidad (predeterminada, privada, protegida, pública)

Por favor, corríjame si estoy equivocado.


Un archivo .java se llama unidad de compilación. Cada unidad de compilación puede contener cualquier cantidad de clases e interfaces de nivel superior. Si no hay tipos públicos de nivel superior, la unidad de compilación se puede llamar cualquier cosa.

//Multiple.java //preceding package and import statements class MyClass{...} interface Service{...} ... //No public classes or interfaces ...

Solo puede haber una clase / interfaz pública en una unidad de compilación. El cu debe nombrarse exactamente como este tipo de nivel superior público.

//Test.java //named exactly as the public class Test public class Test{...} //!public class Operations{...} interface Selector{...} ... //Other non-public classes/interfaces

Puntos importantes sobre el método principal - parte 1

Parte 2

(Puntos sobre el número de clases y sus niveles de acceso cubiertos en la parte 2)


Varía ... Un ejemplo de esto sería una clase anónima (se encontrará con mucho cuando use los receptores de eventos y tal).


Sí, 200% ,

Ejemplo:

class A { void methodDeclaration() { System.out.println("!!!"); } } class B { public static void main(String[] args) { new A().methodDeclaration(); } }


Sí puede. Sin embargo, solo puede haber una clase pública de nivel superior por archivo .java , y las clases públicas de nivel superior deben tener el mismo nombre que el archivo fuente.

El propósito de incluir múltiples clases en un archivo fuente es agrupar la funcionalidad de soporte relacionada (estructuras internas de datos, clases de soporte, etc.) junto con la clase pública principal. Tenga en cuenta que siempre está bien no hacer esto, el único efecto es en la legibilidad (o no) de su código.