2014-02-07 76 views
0
public class StudentFormMain { 
    public static void main(String[] args) { 
     new StudentForm(); 
    } 
} 

和二等車廂這些構造函數調用語句之間的區別?

public class StudentForm extends JFrame { 
    public StudentForm(){ 
     setTitle("Admission Form"); 
     setSize(300,250); 
     setVisible(true); 
    } 
} 

我的問題是

是這些語句之間的差異

StudentForm studentform=new StudentForm(); 

new StudentForm() 

第一個語句聲明該類的Obj並調用構造函數,但在第二個語句中,只有構造函數正在調用。

注:結果相同

super(""); set the title of the frame 

,因爲它是調用父類的構造函數。 我們還可以使用setTitle("")方法設置標題

請區分方法。

回答

1

的代碼:

StudentForm studentform = new StudentForm(); 

構造新StudentForm實例和參照該實例分配給一個變量studentform。以便您可以稍後調用StudentForm實例的方法,例如studentform.addContainerListener(xxx)

但代碼new StudentForm()只是調用構造函數來創建一個新的對象實例,但不保存對該實例的引用。

+0

你正在向變量說這個實例這個實例對變量的意義是什麼? – Zu007

+0

@ Zu007'實例'與'對象'具有相同的含義。 'reference'與c/C++中的'pointer'類似。而變量是可變的。在代碼'StudentForm studentform = new StudentForm();'中,'studentform'是一個變量,該類型是引用類型,並指向由'new StudentForm()'創建的對象(實例)。 –

1
new StudentForm(); 

上面的變體只調用構造函數。

StudentForm studentform=new StudentForm(); 

當你想訪問類中的構造函數以外的其他方法時使用上面的變體。在這兩種情況下,無論您是否使用studentform對象,都會調用構造函數。

例如,如果你類已其他方法調用methodOne()

public class StudentForm extends JFrame { 
    public StudentForm(){ 
     setTitle("Admission Form"); 
     setSize(300,250); 
     setVisible(true); 
    } 
    public void methodOne() 
    { 
     System.out.println("In method one.."); 
    } 
} 

然後就可以調用它使用:

StudentForm studentform=new StudentForm(); 
studentform.methodOne(); 
1

new關鍵字表示一個StudentForm對象的instantiation/creation。所以

new StudentForm() 

給你StudentForm一個實例,或是一個StudentForm對象。

唯一的區別

之間
StudentForm studentform = new StudentForm(); 

and 

new StudentForm(); 

在於前者給你一個referenceStudentForm對象。所述參考是studentForm

1

StudentForm studentform=new StudentForm();

您正在創建類型StudentForm的對象,並將其分配給一個參考稱爲studentform(使用駝峯即,對田studentForm代替studentform)。現在,您可以使用studentForm調用對象的某些方法/訪問字段。

eg: studentForm.toString()

如果你不;噸獲取對象的引用,你不能CAL該對象的非靜態方法。

1

您的第一條語句持有已創建實例的引用,第二條語句沒有已創建對象的引用。除此之外,沒有區別。

相關問題