内部类

Java内部类

使用内部类的原因

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

注意: 内部类中声明的所有静态域都必须是fnal. 原因很简单, 我们希望一个静态域只有一个实例, 不过对于每个外部对象, 会分别有一个单独的内部类实例. 如果这个域不是final, 它可能就不是唯一的.
内部类中不要使用static方法!!!

非静态内部类
语法:
内部类 实例名 = 外部类实例.new 内部类();

	AA outside = new AA();
	BB inside = outside.new BB();
	//AA, BB 均为类名

静态内部类
静态内部类不需要外部类的实例化
语法:
外部类.内部类 实例名 = new 外部类.内部类();

	AA.BB inside = new AA.BB();

匿名类
匿名类指的是在声明一个类的同时实例化它,使代码更加简洁精练.
通常情况下,要使用一个接口或者抽象类,都必须创建一个子类.

		public abstract class A {
		public abstract void HEY();
	}
	
		public class B extends A{
		public void HEY() {
	}
	}

		public static void main(String[] args) {
		B beta = new B();
		beta.HEY();
		System.out.println(beta);
	
		A alpha = new A(){  //当场实现HEY方法  
			public void HEY(){
				System.out.println("当场实现!");
			}
		};

		alpha.HEY();
		System.out.println(alpha);
	}
/* 
	打印结果:
	t2.B@15db9742 
	当场实现!
	t2.test_main$1@6d06d69c
*/

通过打印alpha我们发现这个对象属于test_main$1这么一个系统分配的类名.

回归主题, 既然实现了抽象方法,那么就是一个新的类,只是这个类,没有命名。这样的类,叫做匿名类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值