2016-06-18 10 views
0

Ich habe den Code eines fortgeschrittenen Studenten beobachtet und ich sah etwas, das ich in keinem Tutorial gesehen habe. Ein Objekt wurde innerhalb des Konstruktors einer anderen Klasse instanziiert. So etwas wie dieses:Java EE, Zweck einer Objektinstanz in einem Konstruktor einer anderen Klasse

public class Student { 
    private String name; 
    private int age; 
    ... 

    public Student() { 
     Course course = new Course(); 
    } 
} 

Die App verwendet eine Datenbank, die Course und Student-Tabellen hat. Was ist der Zweck davon? Hat es etwas mit dem Fremdschlüssel zu tun?

+0

'Klasse' ist eine Art in Java: https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html – Ramanlfc

+1

Nun, ich kann sagen, es ist etwas normales oder zumindest normal. Sagen wir, jeder Schüler hat einen Schulranzen. Dann erfordert das Instanziieren eines Schülers die Erstellung eines SchoolBag-Objekts. –

+0

Wenn Sie gemeint haben, dass "Klasse" für den Typ der Klasse steht, die ein Schüler belegt, sollten Sie Ihren Beitrag bearbeiten und in Ihrem Beispiel einen anderen Namen wählen. 'Class' ist ein Standardklassenname in Java und Sie sollten keine eigene Klasse mit diesem Namen aufrufen. –

Antwort

-2

Instanzen der Klasse Klasse repräsentieren Klassen und Schnittstellen in einer laufenden Java-Anwendung. Ein Enum ist eine Art von Klasse und eine Annotation ist eine Art Schnittstelle. Jedes Array gehört ebenfalls zu einer Klasse, die als ein Klassenobjekt widergespiegelt wird, das von allen Arrays mit demselben Elementtyp und derselben Dimension geteilt wird. Die primitiven Java-Typen (boolean, byte, char, short, int, long, float und double) und das Schlüsselwort void werden ebenfalls als Klassenobjekte dargestellt. Klasse hat keinen öffentlichen Konstruktor. Stattdessen werden Klassenobjekte automatisch von der Java Virtual Machine erstellt, wenn Klassen geladen werden, und durch Aufrufe der defineClass-Methode im Klassenladeprogramm.

Im folgenden Beispiel wird ein Klassenobjekt den Klassennamen eines Objekts drucken:

void printClassName(Object obj) { 
    System.out.println("The class of " + obj + 
         " is " + obj.getClass().getName()); 
} 
+0

Ich denke, die Verwendung des Namens 'Class' war eine unglückliche Wahl des OP. Ich nenne es "Klasse" wie in "Schulklasse" für den Schüler. –

+0

Ein Objekt der Klasse Kurs wurde im Konstruktor einer Klasse Student instanziiert – noOne

0

Wenn ich Ihre Frage richtig verstanden habe, geht es um die folgende Zeile in dem Konstruktor der Student Klasse:

Course course = new Course(); 

sehen Sie diese Zeile allein, würde ich sagen, dass dies keinen Sinn macht, weil das course Objekt nicht außerhalb des Student Konstruktor zu sehen.

Aber es gibt einige Leute, die etwas Code in einem Konstruktor ausführen. Also ich denke, dass einige Code im Konstruktor Course Klasse ausgeführt werden können.

Auch wenn es möglich ist (Ausführen von Code in einem Konstruktor), ist es nicht ratsam, etwas im Konstruktor zu tun, außer für den Zweck Konstruieren/Erstellen einer Instanz dieser Klasse.