走进Java(十三):内部类

本文深入解析Java中的内部类概念,包括成员内部类、静态内部类、方法内部类及匿名内部类的特点与使用方式,通过实例代码展示如何创建与调用内部类对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Java中,类中除了可以定义成员变量与成员方法外,还可以定义类,称为内部类,外面类称为外部类
  • 内部类的特点:
    1. 内部类与外部类经过JVM编译后,生成的是两个独立的.class
    2. 内部类是外部类的一个成员,内部是可以访问外部类的任何成员,但外部类不能直接访问内部类成员
    3. 内部类可以为静态的,外部类不能

成员内部类:

一个类作为外部类的成员

//外部类创建一个内部类对象
外部类名.内部类名 引用变量名=new 外部类名().new 内部类名();
package com.xdl.java.pkg07;

//定义外部类
public class Other {
	// 定义类成员变量
	private String name = "Other";
	private int count;

	// 定义内部类
	class Inner {
		// 定义内部类的变量
		private String name = "Inner";

		public void say() {
			// Other.this代表外部类对象
			System.out.print(Other.this.name);
			System.out.println(":" + count);
		}
	}
}
package com.xdl.java.pkg07;

public class TestOther {
	public static void main(String[] args) {
		// 创建内部类对象
		Other.Inner obj = new Other().new Inner();
		// 调用内部类方法
		obj.say();
	}
}

静态内部类

package com.xdl.java.pkg07;

public class Other2 {
	// 定义静态类成员变量
	private static String name = "Other";
	private static int count;

	// 定义内部类
	static class Inner {
		// 定义内部类的变量
		public static String name = "Inner";

		public static void say() {
			// Other.this代表外部类对象
			System.out.print(Other2.name);
			System.out.println(":" + count);
		}
	}
}
package com.xdl.java.pkg07;

public class TestOther2 {
	public static void main(String[] args) {
		// 直接调用内部类的属性
		String str = Other2.Inner.name;
		System.out.println(str);

		// 创建静态内部类对象
		Other2.Inner obj = new Other2.Inner();
		obj.say();
	}
}

方法内部类

在类中的方法中,定义类

package com.xdl.java.pkg07;

public class Other3 {
	// 定义类静态成员
	private static String name = "Other";
	private static int count;

	public void say() {
		// 定义方法内部类
		class Inner {
			// 定义类成员
			public String name = "Inner";

			// 定义内部方法
			public void say() {
				// 内部类成员方法中,访问外部类私有成员变量
				System.out.print(Other3.name);
				System.out.println(":" + count);
			}
		}
		// 创建局部内部类
		Inner obj = new Inner();
		obj.say();
	}
}

匿名内部类

匿名内部类,就是没有名称的内部类

package com.xdl.java.pkg07;

public class Other4 {
	public void say(){
		System.out.println("Other4.say");
	}
}
package com.xdl.java.pkg07;

public class TestOther4 {
	public static void main(String[] args) {
		// 创建匿名内部类
		Other4 o = new Other4() {
			public void say() {
				System.out.println("匿名内部类");
			}
		};
		o.say();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值