una son que privada otra objeto nombre llevan las internas interna interfaz externa dentro crear clases clase java class access-modifiers internal

son - ¿Hay algo así como una clase interna en Java?



que es una interfaz interna (7)

Dejar caer el modificador de acceso es similar al interno en C #.

DO#

public class A { public static int X; internal static int Y; private static int Z; } internal class B { public static int X; internal static int Y; private static int Z; public class C { public static int X; internal static int Y; private static int Z; } private class D { public static int X; internal static int Y; private static int Z; } }

Java

public class A { public static int X; static int Y; private static int Z; } class B { public static int X; static int Y; private static int Z; public class C { public static int X; static int Y; private static int Z; } private class D { public static int X; static int Y; private static int Z; } }

Fuente: http://www.javacamp.org/javavscsharp/internal.html

En C #, puede marcar una clase como internal para que solo sea accesible desde el mismo paquete. ¿Hay algo similar en Java?


No estoy familiarizado con C #, pero en Java la protección predeterminada es que algo solo es accesible dentro del paquete:

público = accesible por cualquier persona

privado = accesible solo dentro de la clase actual

protected = accesible dentro del paquete o en cualquier clase que herede de la clase actual

predeterminado = accesible dentro del paquete

Siempre he pensado que debería haber una manera de decir "accesible por cualquier clase que herede de la clase actual pero no desde ningún otro lugar, este paquete o cualquier otro". Pero no hay.


Puede crear clases privadas de paquetes al omitir el modificador de seguridad (público, privado) de la declaración de la clase.

package com.sample; class MyPackagePrivateClass { ... }


Puedes hacer un paquete de clase local. Este es el alcance predeterminado para una clase. es decir, donde no tiene modificadores de acceso.

Si realmente quieres poner algo, puedes crear una anotación, por ejemplo, @package_local. Hago esto en lugares donde esperemos que sea un paquete local y no lo dejes sin especificar.


Sí, el nivel de acceso predeterminado (paquete privado). Simplemente omita cualquier modificador de acceso en la definición de su clase y obtendrá lo que desea.


Sí. Se llama paquete privado, solo define la clase sin ningún modificador:

package com.blah; class Foo{ }


esta pregunta tiene una respuesta aceptada anteriormente, pero creo que la respuesta no está del todo clara para alguien que es nuevo en Java y proviene de .Net.

¿Tiene Java algún equivalente exacto para el modificador interno en C #? la respuesta corta es NO (pero puede lograrlo de alguna manera y lo diré) !!

interno en C # es en realidad un modificador "ensamblador-privado". ¿Qué es una asamblea?

El ensamblado es cualquier producto de su proyecto (DLL o EXE en C #: el equivalente en Java puede ser un archivo JAR)

no hay ningún equivalente exacto para interno en java. y lo que ha sido respondido por Bryan Kyle y aceptado es en realidad "paquete privado" (los paquetes en Java son equivalentes para los espacios de nombres en C #) pero de alguna manera lo que se ha respondido es la forma más cercana de obtener el mismo resultado.

PERO, ¿cómo obtener el mismo resultado que el interno? ¿No puede Java tener una solución para esto? la respuesta es sí.

tiene. pero no con un modificador. de hecho, la mejor manera de hacerlo es un secreto en el empaquetado. la mejor práctica de empacar es empacar sus clases por su relación, no por su tipo.

muchos de nosotros usamos paquetes llamados "Modelos" o "Presentadores" y ponemos todos nuestros modelos o presentadores en ellos. mientras esto es tan malditamente incorrecto los paquetes deben ser como "Libro" que contiene "BookModel.java", "BookPresenter.java", .....

de esta manera puede hacer que sean paquetes privados al omitir el modificador y no tener ningún problema porque puede acceder a ellos en cualquier clase que necesite su paquete privado porque tiene una buena práctica de empaquetado.