JAVA基础13-内部类

1.概念
将一个类的定义放在另一个类的定义内部。
注意:	
	内部类拥有外部类所有元素的访问权。
内部类的作用:
	每个内部类都能独立地继承一个实现,所以无论外部类是否继承某个实现,对内部类都无任何影响。
2. .this和.new
.this:在内部类中调用本内部类对象所关联的外部类对象。【生成对外部类对象的引用】
.new 创建某个内部类对象
package com.demo9a;

public class OutClass {
	public void f(){System.out.println("aaa");}
	public Inner inner(){
		return new Inner();
	}
	
	public class Inner{
		public OutClass outer(){
			//.this的使用
			return OutClass.this;
		}
	}

	
	public static void main(String[] args) {
		OutClass d=new OutClass();
		d.f();
		//.new的使用
		OutClass.Inner in=d.new Inner();
		in.outer().f();
		
	}
	
}

3. 内部类分类
四个:成员内部类,静态内部类,匿名内部类,局部内部类
3-1 成员内部类
概念:定义在一个类内部的类。
注意: 
	A.成员内部类中不能定义静态方法,只能定义 static final的静态成员。
	B. 创建内部类实例:外部类名.内部类名 变量名=外部类实例名.new 内部类名();
	C. 内部类访问外部类对象。 外部类名.this.成员方法/属性
	D. 成员内部类编译的时候,会出现独立的class文件
	E. 与外部类同级的类继承内部类时,构造方法的第一句调用“外部类对象名.super()”
3-2 静态内部类
概念:使用static修饰的成员内部类
3-3 局部内部类
概念:定义在代码块,方法体内,作用域内的类
注意:
	A.局部内部类只能在定义的代码块,方法体内,作用域内有效
	B.局部内部类访问作用域内的局部变量,局部变量是final
	C:可用abstract声明为抽象类。
3-4 匿名内部类
概念:创建一次后这个类的定义会消失。
package com.demo9aa;

public class OutClass {
	class inner{
		public void f(){
			System.out.println("成员内部类");
		}
		
	}
	
	static class innerA{
		public void f(){
			System.out.println("静态内部类");
		}
	}
	public void f(){
		class InnerB{
			public void f(){
				System.out.println("局部内部类");
			}
		}
		InnerB b=new InnerB();
		b.f();
	}
	
	public Object obj=new Object(){
		private String name="匿名内部类";
		
	};
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值