Java 中内部类简单概念

概念:在一个类内部定义的类
1.内部类会生成独立的.class文件。文件名Outer$Inner.class
2.内部类可以访问外部类的私有属性,从而不破坏外部类的封装性

成员内部类(类比成员变量)

1.定义位置:类以内,方法以外
2.如何创建对象

Outer o = new Outer();	//创建外部类对象
Outer.Inner inner = o.new Inner();	//创建成员内部类对象

3.注意:
a. 访问外部类的属性:外部类类名.this.外部类属性名 例:Outer.this.a;
b. 成员内部类中不能定义静态成员 (属性和方法)

静态内部类(类比静态变量)

1.定义位置:类以内,方法以外。被static修饰
2.如何创建对象:

Outer.Inner inner = new Outer.Inner();	//创建静态内部类对象

3.注意:
a.静态内部类中不能访问外部类的非静态属性

局部内部类(类比局部变量)

1.定义位置:方法内部
2.如何创建对象:
只能在它所在的方法内部创建

class Outer{
    
    
	public void m1() {
    
    
		class Inner02{
    
    	//局部内部类
		
        }
		Inner02 inner = new Inner02(); //只能在m1方法内部创建局部内部类对象
	}	
}

3.注意:
局部内部类访问它所在方法中的局部变量,那么这个变量必须被final修饰
在JDK 8.0开始,这个局部变量默认被final修饰

匿名内部类

1.特殊的局部内部类,局部内部类具有的特点 匿名内部类都有
2.必须实现一个接口或者继承一个类

接口名/父类名 引用名 = new 接口名/父类名(){
    
    
    //匿名内部类的内容
}			//定义了一个匿名内部类  并且创建匿名内部类的对象

3.注意:
匿名内部类只能创建一个对象
4.优缺点:
优点:减少代码量
缺点:可读性差,可维护性差

猜你喜欢

转载自blog.csdn.net/gym02/article/details/107074479