gpt4 book ai didi

java - 你能解释一下,这些实例化对象的方式有什么不同吗?

转载 作者:行者123 更新时间:2023-11-29 06:26:47 26 4
gpt4 key购买 nike

我正在查看我的计算机科学老师提供的模板,我可以看到他以两种不同的方式实例化一个对象和一个类的对象。

他的第一种做法是这样的:

他首先声明一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com