Java内部类之静态内部类

静态内部类(嵌套内部类):

  1. 内部类定义时加上static关键字。
  2. 可以使用public 、protected 、default 、private修饰符。
  3. 只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法。
  4. 生成静态内部类对象的方式为:OuterClass.InnerClass innerObj = new OuterClass.InnerClass();
  5. 如果不需要内部类对象和它的外部类对象之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。
  6. 要想理解static应用于内部类是的含义,必须记住,成员内部类(普通内部类、常规内部类)对象隐含地保存了一个外部类对象的引用,指向创建它的外部类的对象。可是,静态内部类却不是这样。
  7. 嵌套类意味着:a、创建嵌套类的对象的时候,并不需要外部类的对象。b、嵌套内部类对象不能访问非静态的外部类对象。

package com.qs.innerclass;

class OuterClass {

    private static int a = 1;// 静态内部类可以访问
    private int b = 2;// 静态内部类不能访问

    public static void outerFuncOne() {// 静态内部类可以访问

    }

    public void outerFuncTwo() {// 静态内部类不能访问

    }

    public void outerFuncThree() {
        // 外部类访问静态内部类的静态成员(直接使用类名访问)
        System.out.println(StaticInnerClass.innerA);
        StaticInnerClass.innerFuncOne();
        // 外部类访问静态内部类的非静态成员(需要创建对象)
        System.out.println(new StaticInnerClass().innerB);
        new StaticInnerClass().innerFuncTwo();
    }

    static class StaticInnerClass {
        // 静态内部类中可以存在静态成员
        static int innerA = 3;
        int innerB = 4;

        static void innerFuncOne() {
            // 静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)
            System.out.println("outer.a : " + a);
            outerFuncOne();
        }

        void innerFuncTwo() {
            // 静态内部类不能访问外部类的非静态成员(包括静态变量和静态方法)
            // System.out.println("outer.b : " + b);
            // outerFuncTwo();
            System.out.println("innerFuncTwo");
        }

    }

}

public class StaticInner {
    public static void main(String[] args) {
        OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
        inner.innerFuncOne();
        OuterClass outer = new OuterClass();
        outer.outerFuncThree();
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值