0
JFrame frame1 = new JFrame();

如果我通过做声明 frame1JFrame frame1;JFrame类型Object还是其他?做什么JFrame,为什么我不能省略它?

4

7 回答 7

2

是的,它定义了frame1变量的类型。Java 是一种强类型语言,所有变量都必须定义类型。许多 Java 类扩展了其他类或实现了其他接口,并且变量通常可以具有多种类型。虽然JFrame是这里的“自然”选择,但您也可以编写,例如:

Component frame1 = new JFrame();

因为JFrame扩展Component。因此,语言坚持指定类型,即使在同一行初始化的地方隐含了一个自然“明显”的类型。

于 2013-09-06T07:50:54.790 回答
1

JFrame frame1 = new JFrame();

这是一个变量声明语句。它创建一个名为frame1type的变量(引用) JFrame,指向一个新的 type 对象JFrame

于 2013-09-06T07:56:22.147 回答
0
JFrame  frame1;

告诉引用frame1 是 type JFrame

所以当instantiating/assigning它检查类型时。

于 2013-09-06T07:50:22.070 回答
0

在您的示例中,JFrame既是变量的类型,也是变量中对象的类型。当您编写时JFrame frame1,您正在创建一个名为的变量frame1,其中包含一个JFrame; 您放入该变量的实际对象可以是一个JFrame或任何子JFrame类。当您编写 时new JFrame(),您正在创建一个新类型的对象JFrame以放入frame1变量中。

于 2013-09-06T07:52:12.507 回答
0

声明如下:

JFrame frame1;

表示 frame1 是 JFrame 类型的引用,它不会创建任何对象

JFrame frame1 = new JFrame();

创建一个由 frame1 引用的 JFrame 类型的新对象。

如下图所示:

在此处输入图像描述

来源

于 2013-09-06T07:53:32.083 回答
0

基本上,您已通过以下方式声明这frame1是对象/类JFrame的类型:

JFrame frame1;

并通过

JFrame frame1 = new JFrame();

意味着您已经实例化了frame1类型为 Object/class的声明JFrame

于 2013-09-06T07:53:48.083 回答
0

你的代码

JFrame frame1 = new JFrame();

实际上是对象声明和初始化,这是面向对象编程概念中的基本思想。

在 OOP 中,对象声明和初始化是一个 2 步过程。

Step 1:Object declarion -----> JFrame frame;

实际上,该特定类(jFrame)类型的参考变量(框架)正在贴花,但没有分配任何内容,因此默认情况下它具有空值。

Step2:Object initialization--> frame=new Jframe();

这里发生了实际对象声明,这是由 new 关键字动态完成的,这里调用了构造函数 JFrame()。因此,对象内存引用被分配给“框架”引用变量。

所以如果你贴花

JFrame frame; 

在你初始化它之前什么都不会发生

frame=new Jframe();
于 2013-09-06T08:44:30.390 回答