内部类分类

Java中的内部类(四种)

内部类分类

// OutClass 是外部类
public class OutClass {
   
    // 成员位置定义:未被static修饰 --->实例内部类
    public class InnerClass1{
   
    }
    // 成员位置定义:被static修饰 ---> 静态内部类
    static class InnerClass2{
   
    }
    public void method(){
   
    // 方法中也可以定义内部类 ---> 局部内部类:几乎不用
        class InnerClass5{
   
        }
    }
}

实例内部类

​ 即未被static修饰的成员内部类。

为了更好的掌握实例内部类,我们从几个问题入手进行思考:

  1. 实例内部类当中,能不能定义静态的成员变量?

    答: 理论上不能被定义的,但如果非要定义需要加 final 修饰把它变为常量

在这里插入图片描述

  1. 实例内部类当中,能不能定义静态的成员方法?

    答: 不能!!!成员内部类必须先实例化外部类对象然后再实例化成员内部类.非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。
    1、static类型的属性和方法,在类加载的时候就会存在于内存中。

    2、要使用某个类的static属性或者方法,那么这个类必须要加载到 jvm中。

    所以,由上得出静态成员和静态方法是随着类的加载而存在的,也就是说内部类的静态属性是随着类的加载的,但是内部类的实例 是创建后才存在的,也就是说其静态属性优先存在于他的类实例的存在 这显然是矛盾的

在这里插入图片描述

  1. 如何实例化一个实例内部类?

    实例内部类对象必须在先有外部类对象前提下才能创建.

    答: 外部类类名.内部类 变量 = 外部类引用 . new 内部类()

    举例:

    //方法1: 简写方式
    OuterClass.InnerClass innerClass1 = new OuterClass().new InnerClass();
    //方法2: 
    OuterClass outerClass = new OuterClass();
    OuterClass.InnerClass innerClass = outerClass.new InnerClass()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值