Java中常用的内部类

Java中的内部类

一、什么是内部类?

定义:一个类定义在另一个类里面,此类就叫做内部类。

相反定义在一个方法里面的叫做外部类。

举例:

public class OuterClass {
    class Innerclass {
        //这里的InnerClass就叫做内部类;
    }    
}

【注意事项】

定义在class 类名{}花括号外部的,即使是在一个文件里,都不能称为内部类。

public class OuterClass {
   
}
 class InnerClass {
     
}

//这两个类是独立的,并没有什么关系!!!

二、内部类的分类

在Java中,内部类的==分类大概有四种:==实例内部类(非静态内部类或者构造内部类)、静态内部类、局部内部类、匿名内部类。

简单看一下,它们在一个类哪些位置:

class OuterClass {
    //实例内部类
    class InnerClass1 {

    }
    //静态内部类
    static class InnerClass2 {
        
    }
    //局部内部类(定义在方法中的内部类),但几乎不用
    public void func() {
        class InnerClass3 {
            
        }
    }
}

三、对常用的内部类进行讲解

1.实例内部类

概念:即未被static修饰的成员内部类。

(1)如何获取一个实例内部类的对象

在这里插入图片描述

(2)在实例内部类中可直接访问外部类对象(任意访问限制修饰符的成员)

在这里插入图片描述

(3)在实例内部类中不能有静态的成员变量

解释:因为内部类和成员变量、成员方法是同一个等级,在类进行加载的时候,static修饰的变量就会执行。

在这里插入图片描述

如果非要在内部类中定义静态变量,只能用static final 来定义

public static final int data7=7;//被final修饰相当于定义一个常量,就不会被改变

(4)在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,格式必须为:外部类名
称.this.同名成员 来访问

在这里插入图片描述

但我们非要访问外部类中的那个变量,该怎么办?

方法一:先用外部类创建一个对象,然后用该对象来引用

在这里插入图片描述

方法二:外部类名+“.”+this+“.”

在这里插入图片描述

(5)外部类如何访问内部类中的成员及方法

方法:还是要先创建内部类的对象
在这里插入图片描述

(6)注意事项

  • 外部类中的任何成员都可以在实例内部类方法中直接访问(因为都是在同一个{}中,且都包含在外部类中)。
  • 实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束。
  • 实例内部类对象必须在先有外部类对象的前提下才能创建。
  • 外部类中不能直接访问实例内部类中的成员,如果要访问,就必须要先创建内部类的对象。

2.静态内部类

概念:被static修饰的内部成员类称为静态内部类。

(1)在静态内部类中只能访问外部类中静态的成员变量和方法

在这里插入图片描述

如果非要访问,应该怎么做?

方法:需要在静态内部类中创建一个外部类的对象,再进行访问

在这里插入图片描述

(2)注意事项

  • 创建静态内部类对象时,不需要先创建外部类对象

3.局部内部类

概念:定义在外部类的方法体或者{}中,该种内部类只能在其定义的位置使用,一般使用的非常少。

在这里插入图片描述

(1)注意事项

  • 局部内部类只能在当前方法中使用,其他位置都不能使用。
  • 不能被public、static等访问限定修饰符修饰。

4.匿名内部类

本人暂时还没有学,老师说要等到接口和抽象类时再讲,之后一定更新。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

要努力点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值