内部类的分类及方法调用的方式

内部类:

定义:在一个类中定义另一个类

成员内部类:【不能编写静态方法】
声明:在类中成员变量/成员方法位置编写。public class AA_home{};
注:在内部类中可以有成员方法,成员属性。

1:在内部类的方法中使用
	1.1:成员内部类中属性编写: 普通属性。静态属性需要被定义为final
	1.2:成员内部类中方法编写: 普通方法
	1.3:成员内部类中方法调用内部类属性:直接调用/this.属性名
	1.4:成员内部类中方法调用内部类方法:直接调用/this.方法名()
	1.5:成员内部类中方法调用外部类属性:外部类名.this.属性名
	1.6:成员内部类中方法调用外部类方法:外部类名.this.方法名()
2:在外部类的方法调用成员内部类的属性方法
	前提: 创建内部类对象 AA_home aw  = new AA_home();
	2.1:外部类方法调用内部类属性: aw.属性
	2.2:外部类方法调用内部类方法: aw.方法名();
3:在main【静态方法】方法中使用内部类:
	前提:先要获得外部类对象 MemberInner mi = new MemberInner();
	3.1: 获得内部类对象: aw 
		3.1.1: AA_home aw = mi.new AA_home();
		3.1.2: MemberInner.AA_home aw = mi.new AA_home();
	3.2:调用内部类属性:aw.属性名;
	3.3:调用内部类方法:aw.方法名();

静态内部类:
声明:在类中静态成员变量/静态成员方法位置编写。public static class AA_home{};
注: 静态内部类中可以声明静态成员和静态方法.

	1:在内部类的方法中使用
		1.1:静态内部类中属性编写: 可以定义静态属性和非静态属性
		1.2:静态内部类中方法编写: 可以有静态方法和非静态方法
		1.3.内部类资源的访问
			1.3.1静态内部类中方法调用内部类普通属性:直接调用/this.属性名
		  	1.3.2静态内部类中方法调用内部类静态属性:直接调用/this.属性名。会有警告。静态的属性应该用静态的方式类调用
			1.3.3静态内部类中方法调用内部类普通方法:直接调用/this.方法名()
			1.3.4静态内部类中方法调用内部类静态方法:直接调用/this.方法名()

			1.3.5静态内部类中方法调用外部类普通属性: 不可以【直接,需要创建外部类对象】访问
			1.3.6静态内部类中方法调用外部类静态属性: 外部类名.属性
			1.3.7静态内部类中方法调用外部类普通方法: 不可以【直接,需要创建外部类对象】访问
			1.3.8静态内部类中方法调用外部类静态方法: 外部类名.方法名
	    总结:静态内部类,内部方法只能访问外部类的静态属性/方法。【直接,需要创建外部类对象】 
	2:在外部类的方法调用静态内部类的属性方法
		2.1普通属性方法:
		 前提: 创建内部类对象 AA_home aw  = new AA_home();
			 2.1.1:外部类方法调用内部类属性: aw.属性
			 2.1.2:外部类方法调用内部类方法: aw.方法名();
		2.2静态属性方法:
			2.2.1:外部类方法调用内部类属性: 静态内部类.属性
			2.2.2:外部类方法调用内部类方法: 静态内部类.方法
		2.3:在main方法中使用静态内部类:
			原则:如果调用静态资源需要用类名直接调用,
			     非静态的需要new对象。
			 AA_home aw  = new AA_home()
			 aw.方法();

局部内部类:
声明:在局部代码块中声明 class CC_home{};
局部内部类中只能有非静态方法,非静态属性(如果有静态属性需要被定义为final)

 1:在局部内部类的方法中使用
	1.1局部内部类中属性编写: 非静态+(静态)属性必须被定义final
	1.2局部内部类中方法编写: 普通方法

	1.3局部内部类中方法调用内部类属性:直接调用/this.属性名
	1.4:局部内部类中方法调用内部类方法:直接调用/this.方法名()

	1.5:局部内部类中方法调用外部类属性:外部类名.this.属性名
	1.6:局部内部类中方法调用外部类方法:外部类名.this.方法名()
2:在外部类的方法调用局部内部类的属性方法
	注意:这个是不可能被访问到的。

3:在main方法中使用内部类:
	注意:这个是不可能被访问到的。

匿名内部类:

没有构造器的类(不能手动写,系统会默认给)一般用匿名内部类来实现某接口(使用不多,不需要写一个类实现该接口,可以使用匿名内部类)

匿名内部类一般就是用来实现接口:
	 重写接口(抽象类)中的方法。
	 可以在匿名内部类中写属性。
	
使用情景:面向接口编程,有时候写代码需要写一个类实现某个接口去完成某个功能,
		 eg:集合中的比较器。
		 但这个功能只用一次,没有必要写一个类那么久可以使用匿名内部类来实现这个接口完成这个功能。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值