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

И 2-го классаРазница между этими заявлениями о создании конструктора?

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

Мой вопрос являются

В чем разница между этими заявлениями

StudentForm studentform=new StudentForm(); 

и

new StudentForm() 

Первое утверждение Объявите Obj этого класса и называет Constructor, но во втором выражении вызывает только Constructor.

Примечание: Результат такие же

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 «instance» имеет то же значение, что и «объект». «Ссылка» похожа на «указатель» в c/C++. А переменная - переменная. В коде 'StudentForm studentform = new StudentForm();', 'studentform' является переменной, тип которой является ссылочным типом и указывает на объект (экземпляр), созданный' new StudentForm() '. –

1
new StudentForm(); 

Выше вариаций вызывает только конструктор.

StudentForm studentform=new StudentForm(); 

Выше вариации используются, когда вы хотите получить доступ к другим методам, кроме конструктора в классе. В обоих случаях вы будете вызывать contructor независимо от того, используете ли вы объект 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 ключевое слово означает instantiation/creation в виде StudentForm объекта. Так

new StudentForm() 

дает экземпляр StudentForm или просто StudentForm объект.

Единственное различие между

StudentForm studentform = new StudentForm(); 

and 

new StudentForm(); 

является то, что первые дают вам reference к новому StudentForm объекта. Ссылка будучи studentForm

1

StudentForm studentform=new StudentForm();

Вы создаете объект типа StudentForm и назначение его к опорному называется studentform (используйте верблюжьего т.е., studentForm вместо studentform для полей). Теперь вы можете использовать studentForm для вызова некоторых методов/полей доступа к объекту.

eg: studentForm.toString()

Если вы не; т получить ссылку на объект, вы не можете кал не-статические методы этого объекта.

1

Ваш первый оператор, содержащий ссылку созданного экземпляра, а второй оператор не имеет ссылки на созданный объект. Помимо этого, нет никакой разницы.

Смежные вопросы