Todos saben que Java es un lenguaje de programación orientado a objetos. En el mundo de Java, todo es un objeto. ¿Cómo se representa un objeto en ese Java? Clase
Sabemos que los objetos en Java son subclases de la clase de objetos, por lo que hoy estudiaremos el uso de la clase en Java juntos.
Haga una pequeña pregunta: ¿Son los objetos de las clases? ¿De quién es el objeto la clase? La respuesta es: la clase es un objeto, un objeto de fuerza de la clase java.lang.class.
paquete com.edu.hpu;
Prueba de clase pública {public static void main (string [] args) {// instanciar un objeto por new foo foo = new foo (); // Obtenga la instancia de clase de clase instanciando el método getClass () del objeto clase C1 = foo.getClass (); // Cualquier clase tiene una clase de variable estática implícita de clase C2 = foo.class; // C1 y C2 representan el tipo de clase de clase FOO (tipo de clase) System.out.println (C1 == C2); Clase C3 = nulo; Pruebe {// El tercer método para obtener el tipo de clase de la clase C3 = class.forname ("com.edu.hpu.foo"); } catch (ClassNotFoundException e) {E.PrintStackTrace (); } System.out.println (C1 == C3); Pruebe {// Cree un objeto de instancia de la clase a través del tipo de clase foo c4 = (foo) c1.newinstance (); c4.Start (); } catch (InstanciationException e) {E.PrintStackTrace (); } catch (ilegalAccessException e) {E.PrintStackTrace (); }}} class foo {public void start () {System.out.println ("class foo"); }}A través del código anterior, ¿tiene una comprensión más profunda de la clase? Podemos crear objetos de instancia de clase a través de la nueva palabra clave, y también podemos crear objetos de instancia de clase a través del tipo de clase. Hay tres formas de los métodos anteriores para obtener tipos de clase de clase. Solo obtienen un tipo de clase, por lo que C1 == C2 == C3: True.
Después de la breve introducción anterior, ¿tiene una comprensión más profunda de la clase en Java? Usemos un pequeño ejemplo para introducir el uso real de los tipos de clases y las instancias de clase.
Oficinas de clase {public static void main (string [] args) {if ("word" .equals (args [0])) {word w = new word (); W.Start (); } if ("Excel" .Equals (args [0])) {Excel e = new Excel (); E.Start (); }}}Echemos un vistazo al código anterior. Cuando compilamos, ¿puede pasar normalmente? Aquí necesitamos hablar sobre compilación y operación: la clase cargada en el momento de la compilación es una clase de carga estática; La clase cargada en el tiempo de ejecución es una clase de carga dinámica. Class.forname ("Nombre completo de la clase L"); No solo representa el tipo de clase, sino que también representa la clase de carga dinámica. En el ejemplo anterior, no necesariamente usamos Word y Excel, pero cuando compilamos, si Word y Excel no existen, entonces se producirá un error. Entonces, a continuación implementamos la lógica anterior cargando dinámicamente el tipo de clase.
Class Office {public static void main (string [] args) {try {class c = class.forname (args [0]); Oficable OA = (oficiable) C.NewinStance (); OA.Write (); } catch (Exception e) {E.PrintStackTrace ();}}} interfaz oficialable {public void write ();} Word de clase implementa oficiales {public void write () {System.out.println ("Word ... Start ..."); }} class Excel implementa oficiales {public void write () {System.out.println ("Excel..Write .."); }}De esta manera, podemos agregar dinámicamente clases según sea necesario, para facilitar la expansión de las funciones de nuestra aplicación.