静态内部类

在内部类前添加修饰符static,这个内部类就变为静态内部类了。一个静态内部类中可以声明static成员,但是非静态内部类中不可以声明静态成员,静态内部类有一个最大的特点,就是不可以使用外部类的非静态成员,所以静态内部类在程序开发中比较少见。
可以这样认为,普通的内部类对象隐式地在外部保存了一个引用,指向创建它的外部类对象,但如果内部类被定义为static,就会有更多的限制。静态内部类具有以下两个特点:
1、 如果创建静态内部类的对象,不需要其外部类的对象。
2、 不能从静态内部类的对象中访问非静态外部类的对象。
定义一个静态内部类StaticInnerClass,可以使用如下代码:
在这里插入图片描述
例子中,在内部类的doitInner()方法中调用成员变量x,由于Inner被修饰为static形式,而成员变量x却是非static类型的,所以在doitInner()方法中不能调用x变量。
进行程序测试时,如果在每一个Java文件中都设置一个主方法,将出现很多额外代码,而程序本身不需要这些主方法,为了解决这个问题,可以将主方法写入静态内部类中。
在静态内部类中定义主方法。
在这里插入图片描述
如果编译例子中的类,将生成一个名称为StaticInnerClass I n n e r 的 独 立 类 和 一 个 S t a t i c I n n e r C l a s s 类 , 只 要 使 用 j a v a S t a t i c I n n e r C l a s s Inner的独立类和一个StaticInnerClass类,只要使用java StaticInnerClass InnerStaticInnerClass使javaStaticInnerClassInner,就可以运行主方法中的内容,这样当完成测试,需要将所有.class文件打包时,只要删除StaticInnerClass$Inner独立类即可。

内部类的继承:内部类和其他普通类一样可以被继承,但是继承内部类比继承普通类复杂,需要设置专门的语法来完成。
例:在项目中创建OutputInnerClass类,使OutputInnerClass类继承ClassA类中的内部类ClassB。

在这里插入图片描述
在某个类继承内部类时,必须硬性给予这个类一个带参数的构造方法,并且该构造方法的参数需要继承内部类的外部类的引用,同时在构造方法体中使用a.super()语句,这样才为继承提供了必要的对象引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值