¿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?
¿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?
Respuestas:
Sí puede. Sin embargo, solo puede haber una clase pública de nivel superior por .java
archivo, y las clases públicas de nivel superior deben tener el mismo nombre que el archivo de origen.
El propósito de incluir múltiples clases en un archivo de origen es agrupar la funcionalidad de soporte relacionada (estructuras de datos internas, 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.
java.awt.LightweightDispatcher
?
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 solo archivo fuente, yo diría que es más legible usar clases internas y anónimas. Por ejemplo, se puede usar una clase anónima para definir una clase Comparator 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.
Un archivo .java se denomina unidad de compilación. Cada unidad de compilación puede contener cualquier número de clases e interfaces de nivel superior. Si no hay tipos públicos de nivel superior, la unidad de compilación puede tener cualquier nombre.
//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 se debe nombrar exactamente como este tipo público de nivel superior.
//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
(Puntos sobre el número de clases y sus niveles de acceso cubiertos en la parte 2)
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.
En general, debería haber una clase por archivo. Si organiza las cosas de esa manera, cuando busque una clase, sabrá que solo necesita buscar el archivo con ese nombre.
La excepción es cuando una clase se implementa mejor utilizando una o más clases auxiliares pequeñas. Por lo general, 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 contenedora 'tupla' para pasar algunos datos entre llamadas a métodos. Otro ejemplo son las clases de 'tarea' que implementan Runnable o Callable. Pueden ser tan pequeños que se combinan mejor con la clase padre que los crea y los llama.
Sí 200% ,
Ejemplo:
class A {
void methodDeclaration() { System.out.println("!!!"); }
}
class B {
public static void main(String[] args) {
new A().methodDeclaration();
}
}
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 la clase pública, por lo tanto, si hay más de 1 clase pública, sería difícil seleccionarlo. compilador que cuál debería ser el nombre del archivo de clase.
Varía ... Un ejemplo de ello serían las clases anónimas (las encontrará muchas cuando use detectores de eventos y demás).
Creo que debería ser "sólo puede haber una clase pública de nivel superior NO ESTÁTICA por archivo .java". ¿No es así?
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, entonces una de las formas de implementar un singleton es anidar una clase estática privada dentro de una clase pública. . Entonces, la clase privada interna solo se instancia a sí misma cuando se llama a su método público para acceder a la instancia privada.
Consulte este artículo de wiki,
https://en.wikipedia.org/wiki/Singleton_pattern
El concepto toma un tiempo para asimilarlo.
En un archivo .java, solo puede haber una clase pública de nivel superior cuyo nombre sea el mismo que el del 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 has hecho público uno de ellos. y guarde el archivo .java con el mismo nombre que el nombre de la clase pública. cuando compile ese archivo .java, obtendrá 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.
Si ! El archivo .java solo puede contener una clase pública.
Si desea que estas dos clases sean públicas, deben colocarse en dos archivos .java: A.java y B.java.
Sí, puede 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 ni estar 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 importadora también puede usarlos.
Para una investigación más detallada, puede visitar la publicación de mi blog aquí .
Solo puede haber una clase pública de nivel superior 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 número de clases internas con cualquier visibilidad (predeterminada, privada, protegida, pública)
Por favor, corríjame si estoy equivocado.
Sí puede. Sin embargo, solo puede haber una clase pública por archivo .java, ya que las clases públicas deben tener el mismo nombre que el archivo fuente.