Java静态内部类

2021/5/31 20:21:00

本文主要是介绍Java静态内部类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、静态内部类

如果一个类要被声明为static的,只有一种情况,就是静态内部类。

静态内部类实际上与普通类(即类名必须与文件名一样的顶级类)一样,只是静态内部类在某一类的内部定义了而已,既然是类,要想使用就必须实例化。概念上与静态变量、静态方法是不一样的,不要被“静态”两个字迷惑了(不要以为凡是静态的东西就不需要实例化就可以直接使用,静态内部类是有区别),而且只有静态内部类,而没有静态类(顶级类)的概念。
静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。静态方法中也不能使用关键字this。

二、静态类的特点

1.全局唯一,任何一次的修改都是全局性的影响

2.只加载一次,优先于非静态

3.使用方式上不依赖于实例对象。

4.生命周期属于类级别,从JVM 加载开始到JVM卸载结束。

三、静态类和非静态类之间的区别

1.内部静态类不需要有指向外部类的引用。但非静态内部类需要持有对外部类的引用

2.非静态内部类能够访问外部类的静态和非静态成员。静态类不能访问外部类的非静态成员。他只能访问外部类的静态成员

3.一个非静态内部类不能脱离外部类实体被创建,一个非静态内部类可以访问外部类的数据和方法,因为他就在外部类里面

public class OutClass {

    /**
     *  全局静态变量
     */
    private static final String msg = "i love java";
     // 创建静态类
    public static class staticInnerClass{
         public void showMsg() {
             System.out.println("静态内部类展示信息:"+msg);
         }

    }
    // 创建非静态内部类
    public class InnerClass{
        public void disPlayMsg() {
            System.out.println("非静态内部类展示信息:"+msg);
        }
    }

    public static void main(String[] args) {
        // 创建静态内部类实例
        staticInnerClass sic = new OutClass.staticInnerClass();
        sic.showMsg();

        // 创建非静态内部类实例,需要先创建外部类的实例 OutClass().new
        InnerClass ic = new OutClass().new InnerClass();
        ic.disPlayMsg();

    }
}

 



这篇关于Java静态内部类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程