java内部类的那些事

在java语言中,可以把一个类定义到另外一个类的内部,在类里面定义的这个类就叫做内部类,外面的类叫做外部类。在这种情况下,内部类可以被看成外部类的一个成员(与类的属性和方法类似)。还有一种类被称为顶层类,指的是类定义代码不能嵌套在其他类定义中的类。

内部类主要有以下四种:静态内部类、成员内部类、局部内部类和匿名内部类。定义方法如下:

public class outerClass {
	static class innerClass{}	//静态内部类
}


public class outerClass {
	class innerClass{}	//成员内部类
}


public class outerClass {
	public void menberFunction() {
		class innerClass{
			
		}//局部内部类
	}
}


import java.awt.Frame;
public class MyFrame extends Frame {
	// 外部类
	public MyFrame() {
		addWindowListener(new WindowAdapter() {
			// 匿名内部类
			public void windowClosing(WindowEvent e) {
				dispose();
				System.exit(0);
			}
		});
	}
}

静态内部类是指被声明为static的内部类,它可以不依赖于外部类实例而被实例化,而通常的内部类需要在外部类实例化后才能实例化。静态内部类不能与外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部中的静态成员和静态方法(包括私有类型)。

成员内部类,把静态内部类的static关键字去掉,成员内部类为非静态内部类,它可以自由的引用外部类的属性和方法,无论这些属性和方法是静态的还是非静态的。但是它与一个实例绑定在一起,不可以定义静态的属性和方法。只有在外部的类被实例化后,这个内部类才能被实例化。注意:非静态内部类不能有静态内部类。

局部内部类指的是定义在一个代码块内的类,它的作用范围是其所在代码块,是内部类中最少使用的一种类型。不能被public、protected、private、static修饰。

匿名内部类是一种没有类名的内部类,不使用关键字class、extends、implements,没有构造方法,必须继承其他类或实现其借口。匿名内部类的一般好处是代码更加简洁、紧促,缺点是易读性降低。一般用在GUI中。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值