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 { 
    
        } 
    
    }
  • 相关阅读:
    虚拟机与宿主机网络配置——可互通可上网
    CentOs7下安装Redis
    RabbitMQ使用(下)
    RabbitMQ使用(上)
    定制属于你自己的ViewEngine(一套逻辑多套UI)
    JWT With NetCore WebApi
    day02
    day01
    4、python与MongoDB交互
    3、MongoDB的详细查找
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/5738991.html
Copyright © 2011-2022 走看看