java嵌套类的语法

嵌套类(nested class)是java类的嵌套形式,一个类可以在另一个类中定义,例如:

class OuterClass{
	...
	class NestedClass{
		...
	}
}

嵌套类与外部类的成员是同等地位的,所以嵌套类就有4种级别的访问权限(与变量一样),而外部类只有public与friendly两种访问权限。使用嵌套类可以提高代码的可读性和可维护性,增强封装性,并增加类之间的逻辑关系。
嵌套类有静态的和非静态的两种,后者又叫内部类。内部类里又有两种特别形式,一种在方法体内定义的,称为局部内部类,一种是在方法体内定义的没有类名的内部类,称为匿名内部类。

下面就四种嵌套类举例:

1,静态嵌套类:静态嵌套类在外部类定义成员的地方定义,静态嵌套类可以定义自己的静态成员,只能访问外部类的静态成员,外部类要访问静态嵌套类只能通过类名。

class OuterClass{
	...
	//定义静态嵌套类
	static class StaticNestedClass{
		...	
	}
	
	public static void main(String[] args){
		//创建静态嵌套类的语法
		OuterClass.StaticNestedClass = new OuterClass.StaticNestedClass();
	}
}

2,内部类:内部类是非静态的嵌套类,不能定义自己的静态成员,内部类对象可以直接访问外部类的成员变量和方法。

class OuterClass{
	...
	//定义内部类,即非静态嵌套类
	static class InnerClass{
		...	
	}
	
	public static void main(String[] args){
		//创建内部类的语法:先创建外部类对象,在通过该对象创建内部类对象
		OuterClass outerClass = new OuterClass();
		outerClass.IneerClass = outerClass.new InnerClass();
	}
}

3,局部内部类:不在外部类定义成员的地方定义,而是在某个方法体中定义(属于内部类的一种)。局部内部类不能再myMethod()方法外访问,所以更加隐蔽。

class OuterClass{
	...
	void myMethod(){ //包含局内内部类的方法
		//定义局部内部类
		static class InnerClass{
		...	
		}
		//创建局部内部类
		InnerClass innerClass = new InnerClass();
	}
}

4,匿名内部类(内部类的一种):匿名内部类比局部内部类更加隐蔽,它连名字都没有。匿名内部类可以用来继承一个类或者实现一个接口,但不能同时实现这两种功能。

class OuterClass{
	...
	//定义匿名内部类
	public Abc abc(){    //类定义开始
		return new Abc(){
			private int x = 1;
			public int add(){
				return ++x;
			};         //类定义结束
		}
	}
}

匿名内部类简单点理解:就是通过在定义的时候直接实例化去除了定义的名称。

本文是我在学习了《Java技术及其应用》之后,自己结合书本写下来的心得体会,如果有错的地方,请多多交流。
参考资料:《Java技术及其应用》 清华大学出版社 2009年第一版

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值