Jeder weiß, dass Java eine objektorientierte Programmiersprache ist. In der Java -Welt ist alles ein Objekt. Wie repräsentieren Sie ein Objekt in dieser Java? Klasse
Wir wissen, dass Objekte in Java Unterklassen der Objektklasse sind. Heute werden wir die Verwendung von Klasse in Java gemeinsam untersuchen.
Stellen Sie eine kleine Frage: Sind Klassenobjekte? Wessen Objekt ist die Klasse? Die Antwort lautet: Die Klasse ist ein Objekt, ein Festigkeitsobjekt der Klasse java.lang.class -Klasse.
Paket com.edu.hpu;
public class test {public static void main (String [] args) {// ein Objekt von New Foo foo = new foo () instanziieren; // Erhalten Sie die Instanz der Klassenklasse, indem Sie die Methode getClass () der Objektklasse c1 = foo.getClass () instanziieren; // Jede Klasse hat eine implizite statische variable Klasse Klasse c2 = foo.class; // C1 und C2 repräsentieren den Klassenstyp der Foo -Klasse (Klassentyp) system.out.println (C1 == C2); Klasse C3 = NULL; Versuchen Sie {// Die dritte Methode, um den Klassentyp der Klasse c3 = class.forname ("com.edu.hpu.foo") zu erhalten; } catch (classNotFoundException e) {e.printstacktrace (); } System.out.println (c1 == C3); Versuchen Sie {// Erstellen Sie ein Instanzobjekt der Klasse über den Klassentyp Foo c4 = (foo) c1.newinstance (); C4.Start (); } catch (InstantiationException e) {e.printstacktrace (); } catch (illegalAccessException e) {e.printstacktrace (); }}} class foo {public void start () {System.out.println ("foo class"); }}Haben Sie durch den obigen Code ein tieferes Verständnis des Unterrichts? Wir können Klasseninstanzobjekte über das neue Schlüsselwort erstellen und über den Klassentyp auch Klasseninstanzobjekte erstellen. Es gibt drei Formen der oben genannten Methoden, um Klassenstypen zu erhalten. Sie erhalten nur einen Klassentyp, also C1 == C2 == C3: TRUE.
Haben Sie nach der obigen kurzen Einführung ein tieferes Verständnis der Klasse in Java? Verwenden wir ein kleines Beispiel, um die tatsächliche Verwendung von Klassentypen und Klasseninstanzen einzuführen.
Klassenbüros {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 (); }}}Schauen wir uns den obigen Code an. Kann es beim Kompilieren normal passieren? Hier müssen wir über Kompilierung und Betrieb sprechen: Die in der Kompilierungszeit geladene Klasse ist eine statische Ladeklasse; Die zur Laufzeit geladene Klasse ist eine dynamische Ladeklasse. Class.Forname ("Vollständiger Name der Klasse L"); stellt nicht nur den Klassentyp dar, sondern auch die dynamische Ladeklasse. Im obigen Beispiel verwenden wir möglicherweise nicht unbedingt Wort und Excel, aber wenn wir kompilieren, wenn Wort und Excel nicht existieren, tritt ein Fehler auf. Als nächstes implementieren wir die obige Logik, indem wir den Klassentyp dynamisch laden.
Klasse Office {public static void main (String [] args) {try {class c = class.forname (args [0]); Offizielle OA = (offiziell) C.Newinstance (); oa.write (); } catch (Ausnahme e) {e.printstacktrace ();}}} Schnittstelle officableable {public void write ();} Klassenwort implementiert offiziell {public void write () {System.out.println ("Wort ... Start ..."); }} class excel implements officableable {public void write () {System.out.println ("excel..write .."); }}Auf diese Weise können wir nach Bedarf Klassen dynamisch hinzufügen, um die Ausdehnung der Funktionen unserer Anwendung zu erleichtern.