14、JAVA内部类

内部类

  • 将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类
  • 内部类隐藏在外部类之内,更好的实现了信息的隐藏
分类

成员内部类

  • 最常见,也称为普通内部类
public class Person{
	int age;
	public Heart getHeart(){
		return new Heart();
	}
	class Heart {
		public String beat(){
			return "心跳"}
	}
}
  • 内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化

    • 获取内部类对象:
      1、外部类.内部类 对象名 = new 外部类().new 内部类();
      2、 外部类对象.new 内部类();
      3、外部类对象.获取方法;
  • 内部类可以直接访问外部类的成员;如果出现同名属性,优先访问内类中定义的;

  • 可以使用外部类.this.成员的方式,访问同名外部类成员信息

  • 外部类访问内部类信息,需要通过内部类实例,无法直接访问

  • 内部类编译后.class文件命名:外部类$内部类.class

静态内部类

  • 静态内部类中,只能直接访问外部类的静态成员,如果需要调用非静态方法,可以通过对象实例

  • 静态内部类对象实例时,可以不依赖于外部类对象

  • 可以通过外部类.内部类.静态成员访问类中的静态成员。
    获取静态内部类对象
    1、new 外部类.内部类();
    方法内部类

  • 定义在方法内部,作用范围也在方法内

  • 和方法内部成员使用规则一样,class前面不可以添加public private protected,static

  • 类中不能包含静态成员

  • 类中可以包含final、abstract修饰的成员
    匿名内部类

  • 将类的定义和创建,放到一起完成

  • 在实例对象的同时,完成对于对象内容的实现和编写

  • 没有类型名称也没有实例名称,只能使用一次

  • .编译后的文件命名:外部类$数字.class

  • 无法使用private、public、protected、abstract、static修饰

  • 无法编写构造方法,可以添加构造代码块

  • 不能出现静态成员

  • 匿名内部类可以实现接口也可以继承父类,但是不可兼得

  • 匿名内部类不能是抽象的,它必须要实现继承的类或者实现接口的所有抽象方法

  • 优点:
    对内存损耗,对系统损耗小

  • 弊端:
    重复调用不方便

  • 适用场景:
    1、只用到类的一个实例
    2、类在定义后马上用到
    3、给类命名并不会导致代码更容易被理解

接口中的内部类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值