JFrame frame1 = new JFrame();
如果我通过JFrame frame1;
声明第1帧JFrame
是Object
的类型还是其他的? JFrame
做了什么,为什么我不能省略它?
答案 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引用。
如下图所示:
答案 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();