Java的内部类

六十二、内部类
两个理由要在类或方法中定义内部类:
(1)、我们准备实现某种形式的interface,使自己能创建和返回一个引用。
(2)、要解决一个复杂的问题,并希望创建一个类,用来辅助自己的程序,但是不愿意把类的细节公开。

内部类的引用
(1)、要从内部类代码内引用内部类实例自身,用this
(2)、要从内部类代码内引用外部类实例,用外部类类名.this(MyOuter.this)。


六十三、匿名内部类
注意:(1)、Operation为接口,匿名内部类在方法体中,也可以是main方法中。
(2)、一般用于不能创建对象的抽象类或者接口,且只能用一次。
(3)、不能修改变量的值。

//不是给接口创建对象,而是相当于写了一个没有名字的类来实现Operation接口
Operation operation=new Operation() {
	//重写Operation接口中所有的方法
	};
//调用方法
operation.add();




六十四、局部内部类
(1)、只能在方法中使用,可以使用外部类的属性和方法,
(2)、可以访问该方法中的常量和变量,但是不能修改局部变量的值,可以修改属性(局部内部类中的方法不能修改局部变量和常量的值,但是可以修改属性的值)。
(3)、不能修改的原因:不能保证局部变量的存活期与局部内部类对象一样长,所以内部类对象不能使用它们,除非这些本地方法被标识为最终的即final(jdk8之后可以不是final的)。



六十五、静态内部类
(1)、静态内部类中只能使用外部类中的所有权限的静态属性和方法(即静态数据中不能使用非静态数据)。
(2)、静态嵌套类不能访问外部类的实例变量和方法。
(3)、调用:类名.内部类名的方式

Outer.Inner in=new Outer.Inner();
		1、in.fun1();
		2、Outer.Inner.fun1();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值