java的一点小问题,初学者不是很懂
publicclassGUIExample{classMyFrameextendsJFrame{publicMyFrame(){//TODOAuto-generatedc...
public class GUIExample{ class MyFrame extends JFrame{ public MyFrame() { // TODO Auto-generated constructor stub super(); } } public static void main(String [] args){ MyFrame myFrame=new MyFrame(); }}//这段代码报错,说是没有GUIExample的实例,这是为什么呢
展开
展开全部
追问
我知道这样子改可以,但是main不是也在GUIExample中吗,为什么还要从外部来调用
追答
main函数只是一个程序的入口,这里你将它放在了GUIExample之中,不过需要注意的是,不管你创建还是不创建GUIExample的实例程序都是可以运行的,意思就是,虽然是在GUIExample中,但是它是不需要创建GUIExample的实例的,而嵌套类和main函数是有很大区别的。
内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。
内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
这样说,清楚吗?
展开全部
MyFrame是内部类(你将它定义在GUIExample中了),不能直接生成对象。
主函数需要先声明GUIExample对象。
你试试
public static void main(String [] args)
{
GuiExample gui=new GuiExample();
GuiExample.MyFrame bb =gui.new MyFrame();
}
主函数需要先声明GUIExample对象。
你试试
public static void main(String [] args)
{
GuiExample gui=new GuiExample();
GuiExample.MyFrame bb =gui.new MyFrame();
}
追问
谢谢,已经明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询