Java——内部类

内部类

概述

内部类( inner class) 是定义在另一个类中的类。

为什么要使用内部类?

  • 内部类方法可以访问该类定义所在的作用域中的数据, 包括私有的数据。
  • 内部类可以对同一个包中的其他类隐藏起来。
  • 当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous) 内部类比较 便捷

内部类可以分为四种:

  1. 实例内部类:直接定义在类当中的一个类,在类前面没有任何一个修饰符
  2. 静态内部类:在内部类前面加上一个static
  3. 局部内部类:定义在方法的内部类
  4. 匿名内部类:属于局部内部的一种特殊情况

内外部类的修饰符

  • 外部类的修饰符只能有两个:public 或者是 默认修饰

  • 内部类可以使用很多个修饰符

实例内部类

根据内部类定义的位置:定义在类中,和方法是同一级别

在外部类创建成员内部类的对象格式:

外部类.内部类  内部类对象名 = new 外部类().new 内部类();
 Outer.Inner  inner = new Outer().new Inner();

将一个类 设计为内部类的目的 ,大多数都是不想外界访问,,所以内部类的定义应该私有化,私有化之后 在提供一个可以让外界调用的方法,方法内部常见内部类对象并调用

内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类名 和 $ 符号 。 比如,Person$Heart.class

静态内部类

  • 静态内部类是 在内部类前面加上static

  • 静态内部类是 不需要创建外部对象

  • 在静态内部类当中, 没有外部类引用

  • 静态内部类,是可以访问外部类的静态成员

  • 访问静态内部类当中的静态成员:Outter.Inner.color

    Outter.Inner in = new Outter.Inner();
    
  • 静态内部类当中不仅可以定义静态成员也可以定义非静态成员

局部内部类

  • 局部内部类:定义在方法中的内部类

  • 不能使用一些修饰符public private…

  • 局部内部类只能定义在方法当中使用

  • 局部内部类当中是不能包含静态变量

  • 局部内部类当中可以包含局部变量,使用的局部变量的本质是final变量

  • 当堆中一个对象没有人引用 它并不是直接就销毁

匿名内部类

是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,

  1. 定义子类
  2. 重写接口中的方法
  3. 创建子类对象
  4. 调用重写后的方法

前提

匿名内部类必须继承一个父类或者实现一个父接口。

new 父类名或者接口名(){ 
	// 方法重写 
	@Override 
	public void method() { 
		// 执行语句 
	} 
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值