• 对于Java静态内部类的理解


    之前一直在微软.Net平台下开发,在C#中是不能实例化的,而且它的所有成员都要是静态的。我们一般把静态类用作工具类,不需要实例化,直接使用它的属性与方法,整个域中静态类是唯一的

    开始用Java后发现Java的静态类一般使用在某个类的内容,简称静态内部类。而且这种类可以像非静态类一样包含各种非静态成员,同时可以实例化。直接颠覆了我对静态类的认知。

    下面我对Java的静态内部类和非静态内部类进行对比:

    public class outClass {
        public static class innerClass{
            public innerClass(){
                System.out.println("innerClass");
            }
        }
        public static void main(String[] args) 
        { 
            //outClass a = new outClass();
            innerClass b = new innerClass();
            innerClass c = new innerClass();
            
        }
        
    }
    public class outClass {
        public class innerClass{
            public innerClass(){
                System.out.println("innerClass");
            }
        }
        public static void main(String[] args) 
        { 
            outClass a = new outClass();
            innerClass b = a.new innerClass();
            innerClass c = a.new innerClass();
            
        }
        
    }

    总结:

    通过代码我们发现,非静态内部类是附属在外部类对象上的,需要先实例化一个外部类的对象,通过外部类对象才能实例化非静态内部类;而静态内部类可以看做是直接附属在外部类上的,这个静态代表附属体是外部类,而不是外部类实例;外部类在进程中是唯一的,而静态内部类不需要唯一,可以生成多个实例。

  • 相关阅读:
    ASP.NET 页面间数据传递的方法
    ASP.NET中实现页面间数据传递的方法
    C# 连接SQL数据库
    C# 通过url地址获取页面内容
    JS弹窗带遮蔽的功能
    C# Code First 实例学习
    CS窗体程序数据列表分页
    关于RDLC报表打印预览界面显示页码问号的问题
    C#Dictionary键值对取值用法
    分别获取一个字符串中的字母和数字
  • 原文地址:https://www.cnblogs.com/end/p/2827672.html
Copyright © 2020-2023  润新知