java内部类

java内部类详解

一. 类的五大成员

​ 属性、构造方法、一般方法、块、内部类

二 . 内部类

​ 内部类分为4种:成员内部类、静态内部类、匿名内部类、局部内部类。

​ 特点:可以共享外部类的成员(属性,方法)

1.成员内部类

public class Outer {
	String name;
	public void run() {
		System.out.println("外部类方法");
	}
   //成员内部类
	class MemberInner{
		public void cat() {
		name = "";	
		run();
		}
	}
}


 /**
  * 1. 成员内部类可以任意修饰符, 相当于一个普通成员
  * 2. 成员内部类不能定义任何 static成员
  * 3. 成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象
  * 4. 格式 :Outer.MemberInner memberInner=new Outer().new MemberInner();
  * 5. 内部类可直接访问外部类的私有成员,而不破坏封装
  * 6. 成员内部类访问外部类的重名属性 Outer.this.name 
  */

2.静态内部类

public class Outer {
	String name;
	public void run() {
		System.out.println("外部类方法");
	}

   //静态内部类
	static class MemberInner{
		
	}
}


 /**
  * 1. 静态内部类可以任意修饰符, 相当于一个静态成员
  * 2. 静态内部类可以定义任何成员
  * 3. 只能访问外部类的静态成员
  * 4. 格式 :Outer.MemberInner memberInner=new Outer.MemberInner();
  * 5. 内部类可直接访问外部类的私有成员,而不破坏封装
  */

3. 局部内部类

public class Outer {
	String name;
	public void run() {
		class MemberInner{
            private String name;
        }
       MemberInner memberInter=new MemberInner();
	}
}


/**
 * 1. 作用域为方法体, 方法结束就回收
 */

4.匿名内部类

4.1 接口创建匿名内部类
public class Outer {
	String name;
	public void run() {
	 new Runnable(){
         @Override
         public void run(){
             
         }
     }.run();  
	}
}

/**
 * 1. 一个没有名字的实现类 
 * 2. 匿名内部类本身是一个对象可以在方法中传递
 * 3. 如果使用方法中的成员必须是 final 修饰
 * 4. 对于匿名内部类的使用它是存在一个缺陷的,就是它仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,
 *    该类的定义会立即消失,所以匿名内部类是不能够被重复使用
 */
4.1 类创建匿名内部类
public class Outer {
	String name;
	public void run() {
	 new Runnable(){
         @Override
         public void run(){
             
         }
     }.run();  
	}
}

/**
 * 1. 一个没有名字的子类 
 * 2. 匿名内部类本身是一个对象可以在方法中传递
 * 3. 如果使用方法中的成员必须是 final 修饰
 * 4. 对于匿名内部类的使用它是存在一个缺陷的,就是它仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,
 *    该类的定义会立即消失,所以匿名内部类是不能够被重复使用
*/

三. 内部类标识符

每个类都会产生一个.class文件,其中包含了如何创建该类型的对象的全部信息,内部类也必须生成一个 .class 文件,从而可以包含它自己的 Class 对象信息,这些类文件的命名有严格的规则:外部类名字+“$”+ 内部类名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值