java静态内部类示例解释

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java静态内部类示例解释相关的知识,希望对你有一定的参考价值。

1、静态内部类实例代码及解释

package com.rf.rabiitmq;

/**
 * @description: 定义一个外部类,外部类中定义静态内部类
 * @author: xz
 * @create: 2021-08-11 20:30
 */
public class Outer {
    //定义一个实例变量
    private int number;
    //定义一个静态变量
    private static int sum;
    //定义一个非静态方法
    public void select(){

    }
    //定义一个静态方法
    public static void delete(){
        /**
         * 在外部类中调用内部类的属性和方法
         */
        Outer.Inner.result=1;//可以通过静态内部类的全类名来调用静态内部类的静态属性(外部类名.静态内部类名.属性)
        Outer.Inner.walk();  //可以通过静态内部类的全类名来调用静态内部类的静态方法(外部类名.静态内部类名.方法)

        //Outer.Inner.count=1; //不能通过类静态内部类的全类名来调用内部类的非静态属性
        //Outer.Inner.go();    //不能通过类静态内部类的全类名来调用内部类的非静态方法

        Inner inner = new Inner();
        inner.count=1; //可以通过创建内部类实例来调用静态内部类的非静态属性
        inner.go();//可以通过创建内部类实例来调用静态内部类的非静态方法
    }

    /**
     *  定义一个静态内部类
     */
    public static class Inner{
        //定义一个实例变量
        private int count;
        //定义一个静态变量
        private static int result;

        //定义一个匿名代码块
        {

        }

        //定义一个静态代码块
        static {

        }
        //定义一个普通方法
        public void go(){

        }
        //定义一个静态方法
        public static void walk(){
            /**
             *  在静态内部类中调用外部类的属性和方法
             */
            int a = sum;       //可以直接调用外部类的静态属性
            delete();          //可以直接调用外部类的静态方法

            //int b = number;  //直接调用外部类的非静态属性出错(编译出错)
            //select();        //直接调用外部类的非静态方法出错(编译出错)

            Outer outer = new Outer();
            int c=outer.number;//可以通过创建外部类实例来调用外部类的非静态属性
            outer.select();    //可以通过创建外部类实例来调用外部类的非静态方法
        }
    }

}

以上是关于java静态内部类示例解释的主要内容,如果未能解决你的问题,请参考以下文章

为啥片段类应该是公开的?

Java静态内部类

错误:这个片段内部类应该是静态的 [ValidFragment]

java 中静态内部类字段啥时候初始化?是在外部类加载的时候就初始化吗?

Java | 内部类(Inner Class)

私有的嵌套类(内部或静态)是不是可能具有具有公共访问权限的方法?