从头认识java-8.9 嵌套类(使用static的内部类)

页面导航:首页 > 软件编程 > Java编程 > 从头认识java-8.9 嵌套类(使用static的内部类)

从头认识java-8.9 嵌套类(使用static的内部类)

来源: 作者: 时间:2016-01-21 09:39 【

这一章节我们来讨论一下嵌套类。1 概念内部类使用static的时候就是嵌套类。package com ray ch07;public class Test {private static class MyTest3{}}MyTest3就是嵌套类2 注意点(1)只

这一章节我们来讨论一下嵌套类。

1.概念

内部类使用static的时候就是嵌套类。

 

package com.ray.ch07;

public class Test {
	private static class MyTest3{}
	
}

MyTest3就是嵌套类

 

 

2.注意点

(1)只能跟外部类的static部分进行通信

(2)不在持有外部类对象的引用,可以直接使用static特性

 

package com.ray.ch07;

public class Test {
	private int id = 1;
	private static String name = aaa;

	private static class MyTest1 {
		public void say() {
			// System.out.println(id);//error
			System.out.println(name);
		}
	}

	private class MyTest2 {
		public void say() {
			System.out.println(id);
			System.out.println(name);
		}
	}

	public static void main(String[] args) {
		// new Test().new MyTest1();//error.
		new Test.MyTest1().say();
		new Test().new MyTest2();
	}
}

从上面的代码可以看见,MyTest1是不能够访问id,而MyTest2可以。

 

还有,在new的时候,我们可以看见,MyTest1具备了static的特性,不需要new,但是还是需要多加一个括号,而MyTest2则需要new才能调用里面的方法。

 

(3)嵌套类没有this这引用

因为嵌套类使用了static,因此不能使用this来引用外部类。

 

(4)使用场景

一个比较常见的使用场景就是跟main函数结合。

因为在发布项目的时候通过只是发布有用的代码,像测试等代码都不发布的,那么现在这个就比较有用了。

我们来对比一下下面的这两组代码:

 

package com.ray.ch08;

public class Test {
	
	public static void main(String[] args) {
		
	}

}

 

 

 

package com.ray.ch08;

public class Test {
	private void say() {
		System.out.println(abc);
	}

	public static class Tester {
		public static void main(String[] args) {
			Test test = new Test();
			test.say();
		}
	}

}


 

上面两组代码的功能是一样的,但是生成的文件却有区别。

第一个代码只会生成一个Test.class

但是第二个会生成两个文件Test.class和Test$Tester.class,我们只需要在发布到时候把第二个文件删除,那么这些测试的代码就删掉了,这样比较方便。

 

总结:这一章节讨论了嵌套类的概念以及注意点。

 

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<