静态内部类(内部类) - Java

静态内部类

StaticInnerClass01.java

说明:静态内部类是定义在外部类的成员位置,并且有static修饰

  1. 可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员。
  2. 可以添加任意访问修饰符(public.protected、默认、private),因为它的地位就是一个成员。
  3. 作用域:同其他的成员,为整个类体。
  4. 静态内部类 —> 访问 —> 外部类(比如:静态属性)
    访问方式:直接访问所有静态成员
  5. 外部类 —> 访问 —> 静态内部类
    访问方式:创建对象,再访问【案例a】
  6. 外部其他类 —> 访问 —> 静态内部类
    三种方式【案例b】
  7. 如果外部类和静态内部类的成员重名时,静态内部类访问的时,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.成员)去访问。这里不用加this。

【案例a】

外部类Outer10 中的visitInner10()方法

class Outer10 {
    private int n1 = 10;
    private static String name = "haha";
    //1. 放在外部类的成员位置
    //2.使用static修饰
    static class Inner10 {
        public void say() {
            // 可以直接访问外部类的所有静态成员,包含私有的,
            // 但不能直接访问非静态成员。
            System.out.println(name);
        }
    }

    public void visitInner10() {
        Inner10 inner10 = new Inner10();
        inner10.say();
    }
}

【案例b】

方法一

直接创建对象:类似A a = new A()

	Outer10.Inner10 inner10 = new Outer10.Inner10();

new Outer10.Inner10()
因为这是【静态】内部类,所以可以直接用类名访问
前提是满足访问权限

方法二

在外部类 Outer10 中编写一个方法,返回静态内部类的对象

【main】
	Outer10 outertmp = new Outer10();
	Outer10.Inner10 innertmp = outertmp.getInner10();
	innertmp.say();
class Outer10 {
    static class Inner10 {
    }

    public Inner10 getInner10() {
        return new Inner10();
    }
}

方法三

编写一个【静态】方法,返回静态内部类的对象
静态方法getInner10_可以访问静态成员Inner10

class Outer10 {

    static class Inner10 {
    }
    
    public static Inner10 getInner10_() {
        return new Inner10();
    }
}
  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值