static 静态内部类

Posted bichen-01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    
技术图片

运行结果:

技术图片

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

静态内部类

静态内部类定义在类中,任何方法外,用static定义

Java面向对象(OOP)--内部类(静态内部类)

静态内部类

静态内部类

静态内部类和非静态内部类的区别