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 { 
    
        } 
    
    }
  • 相关阅读:
    Python 命令详解
    redhat 6 / centos 6 搭建Django环境
    Linux rsync 命令详解
    Python 文件处理
    [网络流24题]最长不下降子序列问题
    [网络流24题]圆桌问题
    BZOJ 4675(点分治)
    LOJ 2183 / SDOI2015 序列统计 (DP+矩阵快速幂)
    BZOJ 3931 (网络流+最短路)
    [网络流24题]魔术球问题
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/5738991.html
Copyright © 2011-2022 走看看