• static 静态内部类


    静态内部类

    静态内部类:

    1、用static修饰的内部类,称为静态内部类,完全属于外部类本身,不属于外部类某一个对象

    2、static关键字的作用是把修饰的成员变成类相关,而不是实例相关

    3、静态内部类可以包含静态成员,也可以包含非静态成员,但是在非静态内部类中不可以声明静态成员。

    4、静态类内部不可以访问外部类的实例成员,只能访问外部类的类成员,即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员

    5、外部类不可以定义为静态类,Java中静态类只有一种,那就是静态内部类,顶级类不能用static 修饰

    6、外部类如何调用静态内部类中的属性和方法

       1)外部类可以通过创建静态内部类实例的方法来调用静态内部类的非静态属性和方法

       2)外部类可以直接通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法

    7、如何创建静态内部类实例

       1)在非外部类中:外部类名.内部类名 name = new 外部类名.内部类名();

       2)在外部类中:内部类名 name = new 内部类名();

    代码例子:

    复制代码
    public class StaticDome01 {
        private int a = 10;//实例成员
        private static int b = 20;//类成员
    
        static class StaticClass{
            public static int c = 30;
            public int d = 40;
            //类方法
            public static void print(){
                //下面代码会报错,静态内部类不能访问外部类实例成员
                //System.out.println(a);
         
                //静态内部类只可以访问外部类类成员
                System.out.println("静态内部类的静态方法,调用外部类类成员b");
                System.out.println("外部类类成员b="+b);
                
            }
            private void Syso() {
                // TODO Auto-generated method stub
    
            }
            //实例方法
            public void print01(){
                //静态内部内所处的类中的方法,调用静态内部类的实例方法,属于外部类中调用静态内部类的实例方法
                System.out.println("静态内部类的实例方法,调用静态内部类的实例方法");
                StaticClass sc = new StaticClass();
                sc.print();
            }
            
        }
    }
    复制代码

    测试类:

    复制代码
    public class Text {
        public static void main(String[] args) {
            /*
             * 要想访问静态内部类的实例成员,需先创建实例对象,才可以调用,因为实例成员是属于实例的, 创建方法:外部类名.内部类名 name = new
             * 外部类名.内部类名()
             * 通过“ 外部类.内部类.属性(方法)” 的方式直接调用静态内部类中的静态属性和方法
             */
            StaticDome01.StaticClass st = new StaticDome01.StaticClass();
            //访问静态内部类的实例方法
            st.print01();
            //访问静态内部类的实例成员
            int i = st.d;
            System.out.println("非外部类调用静态内部类的实例成员d = "+i);
            //访问静态内部类的类成员
            int j = StaticDome01.StaticClass.c;
            System.out.println("非外部类调用静态内部类的类成员C = "+j);
            //访问静态内部类的类方法
            System.out.println("访问静态内部类的类方法:");
            StaticDome01.StaticClass.print();
        }
    }
    复制代码

    运行结果:

  • 相关阅读:
    Java中通过TCP协议发送和接收数据-Socket编程
    Java中通过UDP协议发送和接受数据
    多线程——线程范围内变量的共享
    多线程——线程间的同步通信
    多线程——线程同步互斥(synchronized)
    多线程——线程的生命周期
    多线程——线程的创建以及操作线程的相关方法简介
    iOS集成ShareSDK微博分享遇到问题 新浪微博登录redirect_uri_mismatch
    iOS中改变部分字体颜色
    CSS属性
  • 原文地址:https://www.cnblogs.com/bichen-01/p/11198753.html
Copyright © 2020-2023  润新知