内部类系列-静态内部类

  • 1、静态内部类是定义在外部类的成员位置,并且有static修饰
  • 2、可以直接访问外部类的所有成员,包括私有的,但不能直接访问非静态成员
  • 3、可以添加任意访问修饰符(public,protected、默认、private),因为它的地位就是一个成员
  • 4、作用域:同其他成员,为整个类体
  • 5、静态内类—访问—外部类(访问方式:直接访问所有静态成员,不能访问非静态成员)
  • 6、外部类—访问—静态内部类(访问方式:创建对象,再方式)
  • 7、外部其他类—访问—静态内部类(访问方式见代码)
  • 8、若外部类和静态内部类的成员重名时,静态内部类访问默认遵循就近原则,若想访问外部类的成员,则可以使用(外部类名.成员)去访问。
public class StaticInnerClass {
    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.outer_method1();

        //外部其他类---访问---静态内部类
        //方式1:静态内部类是可以通过类名直接访问(前提内部静态类提供了对外访问的权限)
        Outer.StaticInner staticInner = new Outer.StaticInner();
        staticInner.staticinner_method1();
        //方式2:作为外部类方法值返回(即在外部类中编写一个专门用于对外提供访问的方法)
        Outer.StaticInner staticInner1 = Outer.getStaticInner();
        staticInner1.staticinner_method1();
    }
}
class Outer{
    private int outer_i=10;
    private static String outer_name="张三";
    public void outer_method1(){
        //外部类---访问---内部类(创建对象,再访问)
        StaticInner staticInner = new StaticInner();
        staticInner.staticinner_method1();
    }
    static class StaticInner{
        private static String outer_name="zyt";
        public void staticinner_method1(){
            //System.out.println("outer_i:"+outer_i);//不能访问非静态成员
            System.out.println("outer_name:"+outer_name);//成员重名时,默认就近原则
            System.out.println("outer_name"+Outer.outer_name);//(外部类名.成员)方式指定访问外部类成员
        }
    }

    public static StaticInner getStaticInner(){
        return new StaticInner();
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值