2011-01-12 32 views
15

Tengo dos clases en dos paquetes diferentes. Para una clase he definido un constructor sin configurar el modificador de acceso para ello. Quiero crear una instancia de un objeto de esta clase en otro paquete y obtener el error 'the constructor xxx() is not visible'.¿Los constructores de Java no son públicos por defecto?

Si defino el acceso modificado a public está bien. Pensé que los constructores son públicos por defecto.

+0

Los constructores de clase son paquete privado por defecto. Los constructores de Enum son privados por defecto. – Boann

Respuesta

18

sin acceso especificador! = Pública

no hay modificador paquete privado. check doc

+0

La respuesta es correcta, pero el documento vinculado no menciona los códigos predeterminados. –

+1

@Bob ¿Has visto _no modificador_? –

+0

pero en las interfaces todos los métodos son públicos abstractos incluso si se publica o no –

13

No, no lo son. Tienen visibilidad del paquete por defecto.

2

Cuando no escribe el modificador de acceso, se establece en predeterminado, lo que significa paquete privado. P.ej. ninguna clase fuera del paquete puede acceder a él.

1

No. tienen el especificador de acceso predeterminado. es decir, tienen visibilidad del paquete.

1

Puede usar modificadores de acceso en una declaración de constructor para controlar qué otras clases pueden llamar al constructor. Si no declara el constructor explícitamente como público, solo está visible en el mismo paquete donde se declaró (acceso al paquete).

7

El acceso es (err ...) acceso predeterminado de forma predeterminada. También conocido como paquete privado. Considere: si fueran public de forma predeterminada, ¿cómo indicaría que un constructor no era public sino que de hecho era un paquete privado? No hay palabra clave correspondiente al paquete privado con el que indicar eso.

1

En una clase, todos los métodos sin modificador de acceso tienen visibilidad del paquete. Sin embargo, en los métodos de interfaz siempre tienen visibilidad pública.

Cuestiones relacionadas