zoukankan      html  css  js  c++  java
  • Java中为什么main()中不能创建内部类对象?

    对main方法而言,虽然写在类中,它是游离于任何类之外的,因此某类的非静态内部类对它而言是不直接可见的,也就无法直接访问 。

    1:非静态内部类,必须有一个外部类的引用才能创建。

    2:在外部类的非静态方法中,因为有隐含的外部类引用this,所以可以直接创建非静态内部类。

    3:在外部类的静态方法中,因为没有this,所以必须先获得外部类引用,然后创建非静态内部类。

    4:静态内部类,不需要外部类引用就可以直接创建。

    5:同时静态的内部类,也不能直接访问外部类的非静态方法。

    6:由此可以推测,非静态内部类之所以可以直接访问外部类的方法,是因为创建非静态内部类时,有一个隐含的外部类引用被传递进来。

    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 { 
    
        } 
    
    }
  • 相关阅读:
    1026. 程序运行时间(15)
    C语言字符串/数组去重
    1025. 反转链表 (25)
    1024. 科学计数法 (20)
    1023. 组个最小数 (20)
    1022. D进制的A+B (20)
    1021. 个位数统计 (15)
    1020. 月饼 (25)
    前端001/正则表达式
    SSM001/构建maven多模块项目
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/5738991.html
Copyright © 2011-2022 走看看