Java内部类

将一个类的定义类放在另一个类的定义内部,叫内部类。
public class InnerClassTest {
public class InnerClassA {//内部类
}
}

内部类继承自某个类和实现某个接口,内部类的代码操作创建它的外围类的对象。
所以可以认为内部类提供了某种进入其外围类的窗口。
外围类实现接口不是总能享用到接口带来的方便,有时候需要用到接口的实现。
每个内部类都能独立地继承一个接口的实现,所以无论外围类是否已经继承了某个接口的实现,
对于内部类没有影响。

普通内部类对象隐藏地保存了一个引用,指向创建它的外围类对象。然而当内部类为静态static时,情况发生了变化。
1.要创建静态类的对象,并不需要其外围类的对象。
2.不能从嵌套类的对象中访问非静态的外围类对象。
3.普通内部类不能有static数据和字段,也不能包含嵌套类。

只能访问外部类的静态成员变量与静态方法。
静态内部类的非静态成员可访问外部类的静态变量,而不可访问外部类的非静态变量。

内部类同外部类的区别
/**

  • 外部类、成员内部类的定义
    */
    public class Outer {

    private int outerVariable = 1;
    private int commonVariable = 2;
    private static int outerStaticVariable = 3;

    /**

    • 成员方法
      */
      public void outerMethod() {
      System.out.println(“我是外部类的outerMethod方法”);
      }

    /**

    • 静态方法
      */
      public static void outerStaticMethod() {
      System.out.println(“我是外部类的outerStaticMethod静态方法”);
      }

    /**

    • 内部类
      */
      public class Inner {

      private int commonVariable = 20;

      /**

      • 构造方法
        */
        public Inner() {
        }

      /**

      • 成员方法,访问外部类信息(属性、方法)
        */
        public void innerShow() {
        //当和外部类冲突时,直接引用属性名,是内部类的成员属性
        System.out.println(“内部的commonVariable:” + commonVariable);
        //内部类访问外部属性
        System.out.println(“outerVariable:” + outerVariable);
        //当和外部类属性名重叠时,可通过外部类名.this.属性名
        System.out.println(“外部的commonVariable:” + Outer.this.commonVariable);
        System.out.println(“outerStaticVariable:” + outerStaticVariable);
        //访问外部类的方法
        outerMethod();
        outerStaticMethod();
        }
        }

    /**

    • 外部类访问内部类信息
      */
      public void outerShow() {
      Inner inner = new Inner();
      inner.innerShow();
      }
      }

内部类等同于类里面嵌套一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值