En cuanto al uso de palabras clave, ya sabemos algo sobre el método estático. Para evitar errores innecesarios al usarlo, todos deben comprender su alcance de uso. Este artículo divide los puntos a tener en cuenta al usar estático en dos aspectos, uno es el alcance del acceso y el otro es la nota sobre la invocación de métodos. Echemos un vistazo a los puntos completos a tener en cuenta al usar estático.
1. Cuando se utilizan métodos estáticos, solo se puede acceder a propiedades y métodos declarados estáticamente, pero no se puede acceder a propiedades y métodos no declarados estáticamente.
paquete com.jk.ref; gente de clase { Nombre de cadena; cadena estática privada país="China"; Personas públicas (nombre de cadena) { this.nombre=nombre; } decir vacío público(){ System.out.println("nombre:"+nombre+" "+"país:"+país); } /** * @regresar el país */ Cadena estática pública getCountry() { país de regreso; } /** * @param country el país a configurar */ setCountry vacío estático público (país de cadena) { Personas.país = país; } } clase pública StaticDemo01 { público estático vacío principal (String [] argumentos) { // TODO Código auxiliar de método generado automáticamente Personas.setCountry("shanghai"); Personas ps1=nuevas Personas("zhangsan"); //People.country="Shanghái"; ps1.tell(); Personas ps2=nuevas Personas("lisi"); // ps2.country="Shanghái"; ps2.tell(); Personas ps3=nuevas Personas("wangwu"); // ps3.country="Shanghái"; ps3.tell(); } }
2. La referencia de la clase principal solo puede ajustar los métodos anulados de la clase principal y los métodos de la clase secundaria. Los métodos con el mismo nombre de padre e hijo no se sobrescribirán sino que se oscurecerán.
prueba de clase pública principal { público estático vacío principal (String [] argumentos) { Super sup = new Sub(); //Encapsulación (conformación hacia arriba) sup.m1(); // La referencia de la clase principal no puede ajustar el método no anulado de la subclase y genera mi en Super sup.m2();// Llame al método de subclase m2, primero herede y construya el método de la clase principal, sobrescriba (reescriba) el método con el mismo nombre de método y genere m2 en Sub Sub sub = (Sub)sup; //Unboxing (forma hacia abajo) sub.m1(); // Llama al método estático de la subclase m1, primero construye el método de la clase principal, el nombre del método es el mismo, el nombre del método es el mismo método de enmascaramiento, genera m2 en Sub sub.m2();// Llame al método de subclase m2, primero herede y construya el método de la clase principal, sobrescriba (reescriba) el método con el mismo nombre de método y genere m2 en Sub } } class Super{ //Clase principal public static void m1() { //Método estático de la clase principal System.out.println(“m1 en Super”); } public void m2() { //Método de clase principal System.out.println(“m2 en Super”); } } class Sub extiende Super{ //Subclase public static void m1() { //Método estático de subclase System.out.println(“m1 in Sub”); } public void m2() { //Método de subclase System.out.println(“m2 en Sub”); } }
Los puntos anteriores son los puntos a tener en cuenta al usar estática en Java Durante operaciones específicas, asegúrese de no ignorar estos dos elementos de uso. Este también es un punto de error común que los principiantes suelen encontrar cuando practican.