java中为什么在主函数中创建外部类对象可以,创建内部类对象就失败了呢?2类不都是非静态的吗?
4个回答
展开全部
public class OuterClass {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
InnerClass innerClass = outerClass.new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
public void foo() {
InnerClass innerClass = new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
public class InnerClass {
}
public static class StaticInnerClass {
}
}
了解以下几点:
1:非静态内部类,必须有一个外部类的引用才能创建。
2:在外部类的非静态方法中,因为有隐含的外部类引用this,所以可以直接创建非静态内部类。
3:在外部类的静态方法中,因为没有this,所以必须先获得外部类引用,然后创建非静态内部类。
4:静态内部类,不需要外部类引用就可以直接创建。
5:同时静态的内部类,也不能直接访问外部类的非静态方法。
6:由此可以推测,非静态内部类之所以可以直接访问外部类的方法,是因为创建非静态内部类时,有一个隐含的外部类引用被传递进来。
展开全部
对main方法而言,虽然写在类中,它是游离于任何类之外的(就跟C++一样,单独一个main方法),因此某类的非静态内部类对它而言是不直接可见的,也就无法直接访问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主函数是程序的入口,在里面创建外部类对象是可以直接调用的,类分静态和非静态,具体要看怎么定义该类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main是静态的,你声明的内部类是非静态的,所以不可以。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询