public class StudentFormMain {
public static void main(String[] args) {
new StudentForm();
}
}
和2ND班级
public class StudentForm extends JFrame {
public StudentForm(){
setTitle("Admission Form");
setSize(300,250);
setVisible(true);
}
}
我的问题是
这些陈述之间有什么区别
StudentForm studentform=new StudentForm();
和
new StudentForm()
First Statement声明该类的Obj并调用构造函数,但在Second语句中只有构造函数正在调用。
注意:结果相同
super(""); set the title of the frame
因为它正在调用超类构造函数。
我们也可以使用setTitle("")
方法
请区分这些方法。
答案 0 :(得分: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 :(得分:1)
new
关键字表示instantiation/creation
对象的StudentForm
。所以
new StudentForm()
为您提供StudentForm
或仅StudentForm
对象的实例。
之间的唯一区别
StudentForm studentform = new StudentForm();
and
new StudentForm();
前者为新reference
对象提供了StudentForm
。引用为studentForm
答案 2 :(得分:1)
代码:
StudentForm studentform = new StudentForm();
构造一个新的StudentForm
实例,并将该实例的引用分配给变量studentform
。这样您就可以稍后调用StudentForm
实例的方法,例如studentform.addContainerListener(xxx)
。
但代码new StudentForm()
只是调用构造函数来创建一个新的对象实例,但不要保留对该实例的引用。
答案 3 :(得分:1)
StudentForm studentform=new StudentForm();
您正在创建一个StudentForm类型的Object,并将其分配给名为studentform的引用(使用camelCase,即studentForm而不是studentform for fields)。现在,您可以使用studentForm来调用对象的某些方法/访问字段。
eg: studentForm.toString()
如果您没有得到对象的引用,则无法对该对象的非静态方法进行校准。
答案 4 :(得分:1)
您的First语句包含已创建实例的引用,第二个语句没有对已创建对象的引用。除此之外,没有区别。