静态内部类_静态类和静态方法[通俗易懂]

静态内部类_静态类和静态方法[通俗易懂]静态内部类:1、用static修饰的内部类,称为静态内部类,完全属于外部类本身,不属于外部类某一个对象2、static关键字的作用是把修饰的成员变成类相关,而不是实例相关3、静态内部类可以包含静态成员,也可以包含非静态成员,但是在非静态内部类中不可以声明静态成员。4、静态类内部不可以访问外部

大家好,欢迎来到IT知识分享网。

静态内部类:

 

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();
    }
}

运行结果:

静态内部类_静态类和静态方法[通俗易懂]

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29797.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信