简单的java问题:对象声明

时间:2013-09-06 07:48:15

标签: java

JFrame frame1 = new JFrame();

如果我通过JFrame frame1;声明第1帧JFrameObject的类型还是其他的? JFrame做了什么,为什么我不能省略它?

7 个答案:

答案 0 :(得分:2)

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

Component frame1 = new JFrame();

因为JFrame扩展了Component。因此,语言坚持指定类型,即使在同一行初始化时隐含了一种天生的“明显”类型。

答案 1 :(得分:1)

JFrame frame1 = new JFrame();

这是一个变量声明语句。 它创建了一个名为frame1的{​​{1}}类型的变量(引用),它指向JFrame类型的新对象。

答案 2 :(得分:0)

JFrame  frame1;

告知引用frame1的类型为JFrame

因此instantiating/assigning会检查类型。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

声明如下:

JFrame frame1;

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

的对象
JFrame frame1 = new JFrame();

创建一个类型为JFrame的新Object,由frame1引用。

如下图所示:

enter image description here

Source

答案 5 :(得分:0)

基本上你已声明frame1是Object / class JFrame的类型:

JFrame frame1;

JFrame frame1 = new JFrame();

表示您已实例化Object / class frame1

类型的声明JFrame

答案 6 :(得分:0)

您的代码

JFrame frame1 = new JFrame();

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

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

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

实际上,该特定类(jFrame)类型的引用变量(框架)正在进行decalring,但没有为其分配任何内容,因此默认情况下为其分配了空值。

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

这里发生了actaul对象声明,它由new关键字动态完成,在这里调用构造函数JFrame()。因此,对象存储器引用被分配给“帧”引用变量。

所以如果你去掉了

JFrame frame; 

nothig会在你初始化为

之前发生
frame=new Jframe();