我正在查看我的计算机科学老师提供的模板,我可以看到他以两种不同的方式实例化一个对象和一个类的对象。
他的第一种做法是这样的:
他首先声明一个 ProfileView 类的对象
//声明一个Profileview对象
private ProfileView profileView;
//Constructor of UserMainView
public UserMainView() {
initWidget(ourUiBinder.createAndBindUi(this));
//Instantiate ProfileView objektet
profileView = new ProfileView();
这是他做事的第二种方式......
//OnModuleLoad - method
public void onModuleLoad() {
//Instantiate an object at ContentPanel "content" / The screen
ContentPanel content = new ContentPanel();
所以我想知道的是,这两种方法之间的确切区别是什么?仅声明一个对象和实例化一个对象之间的确切区别是什么?这对我来说真的很重要,因为我将在本学期末面临口语考试。在此先感谢您的帮助。
最佳答案
这些对象的实例化方式没有区别。两者都使用 new
关键字来调用构造函数,并且两个构造函数都是无参数的:
new ProfileView()
和:
new ContentPanel()
不同之处在于 变量 的范围,它包含对这些对象的引用。当您在方法或代码块中执行此操作时:
ContentPanel content;
您正在该方法或代码块中创建一个名为 content
且类型为 ContentPanel
的新局部变量。该变量将仅存在于该范围内。一旦方法或代码块结束,变量就消失了。它引用的对象可能会超过该范围,具体取决于它的使用方式。但变量 content
仅存在于该范围内。
(重要说明:变量和它们引用的内存中对象是两个截然不同的东西。)
但是,当您在类级别声明变量时:
private ProfileView profileView;
// methods here
然后那个变量现在是一个类级别的成员。该类上的任何实例方法现在都可以访问同一个变量。
关于java - 你能解释一下,这些实例化对象的方式有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733904/