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

标签 java

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

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

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

相关文章:

java - java 骑士之旅

java - 如何让使用 Unsafe 的 java 8 代码在 jdk 8 和 jdk 9 上工作?

java - 如何在 Android NavigationView 菜单中对组进行排序/排序?

java - mvn -install 期间编译错误

Java 计划执行器准确性

java - 如何使用文件浏览器 Android Studio 将歌曲添加到我的歌曲播放列表?

java - 在浏览器中显示传入的 JMS 消息

java - 使用 Java 读取结构化二进制文件的最佳方法

java - 服务内的线程 - 需要等待线程完成 [Android]

java - 延迟setText标签java的问题