栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA静态内部类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA静态内部类

package StaticInnerClassPackage;
//静态内部类的初始化不需要依附外部类,在使用时才初始化。不过在初始化静态内部类的过程中也会初始化外部类。
public class OuterClass extends Person {
    private static int OutStaticVarPrivate = 1;
    static int OutStaticVarNotPrivate = 2;
    int OutVarNotStaticNotPrivate = 3;
    private int OutVarNotStaticPrivate = 4;
    static int SameNameVar = 15;

    public static void main(String[] args) {
        //外部类访问内部类的私有静态变量和非静态变量
        System.out.println(StaticInnerClass.InnerStaticVarPrivate);
        System.out.println(new StaticInnerClass().InnerVarPrivate);
        //外部类访问内部类的非私有静态变量和非静态变量
        System.out.println(StaticInnerClass.InnerStaticVar);
        System.out.println(new StaticInnerClass().InnerVar);

        new StaticInnerClass().NotStaticInnerMethod();
        StaticInnerClass.StaticInnerMethod();//外部类访问内部类的静态方法需要使用 内部类名.内部类静态方法名
        new StaticInnerClass().NotStaticInnerMethodPrivate();
        StaticInnerClass.StaticInnerMethodPrivate();

    }

    public void NotStaticOutMethod() {
        System.out.println("NotStaticOutMethod");
    }

    public static void StaticOutMethod() {
        System.out.println("StaticOutMethod");
    }

    private void NotStaticOutMethodPrivate() {
        System.out.println("NotStaticOutMethodPrivate");
    }

    private static void StaticOutMethodPrivate() {
        System.out.println("StaticOutMethodPrivate");
    }

    
    static class StaticInnerClass extends Student {//不论是私有还是非私有,规则不变,但是如果被private修饰,其他类无法创建内部类对象,就算是 new 外部类.内部类() 的格式也不行
        private static int InnerStaticVarPrivate = 1;
        private int InnerVarPrivate = 2;
        static int InnerStaticVar = 3;
        int InnerVar = 4;
        static int SameNameVar = 25;

        public static void main(String[] args) {
            int SameNameVar = 35;
            //静态内部类中的静态方法访问外部类的静态变量和静态方法---->直接用
            System.out.println(OutStaticVarNotPrivate);
            StaticOutMethod();//内部类访问外部类的静态方法时无需使用“外部类名.静态方法名”
            //无视内部类这一结构,直接按照静态访问非静态看待
            System.out.println(new OuterClass().OutVarNotStaticNotPrivate);
            new OuterClass().NotStaticOutMethod();
            //不管外部类是不是私有变量或私有方法,内部类也可以用
            System.out.println(OutStaticVarPrivate);
            System.out.println(new OuterClass().OutVarNotStaticPrivate);
            StaticOutMethodPrivate();
            new OuterClass().NotStaticOutMethodPrivate();
            //访问局部变量、内部类变量、外部类变量(重名的)
            System.out.println(SameNameVar);
            System.out.println(StaticInnerClass.SameNameVar);
            System.out.println(OuterClass.SameNameVar);
        }

        public void NotStaticInnerMethod() {
//            System.out.println("OutVarNotStaticNotPrivate = " + OutVarNotStaticNotPrivate);//静态内部类的类体内全是静态区域,就算是其中的非静态方法也不能直接调用外部非静态变量
            System.out.println("InnerVar = " + InnerVar);//凡是对于内部类本身来说,调用自己的非静态属性仍然可以算是非静态区域
            System.out.println("NotStaticInnerMethod");
        }

        public static void StaticInnerMethod() {
            System.out.println("StaticInnerMethod");
        }

        private void NotStaticInnerMethodPrivate() {
            System.out.println("NotStaticInnerMethodPrivate");
        }

        private static void StaticInnerMethodPrivate() {
            System.out.println("StaticInnerMethodPrivate");
        }

    }

    class NotStaticInnerClass {
        public void InnerMethod() {
            System.out.println("OutVarNotStaticNotPrivate = " + OutVarNotStaticNotPrivate);
        }
    }
}

package StaticInnerClassPackage;

public class Teacher extends OuterClass{
     //在其他类里面创建内部类的对象需要借助外部类
       OuterClass.StaticInnerClass staticInnerClass = new OuterClass.StaticInnerClass();
}

package StaticInnerClassPackage;

public class Student {
    public static void main(String[] args) {
           static int SameNameVar = 45;
    }
}

package StaticInnerClassPackage;

public class Person {
    static int SameNameVar = 55;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号