在Java中,可以在一个类内部定义另一个类,这种类称为嵌套类(nested class)。嵌套类有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类较少使用,非静态嵌套类使用较多,也就是常说的内部类。其中内部类又分为三种类型:
1、在外部类中直接定义的内部类。
2、在函数中定义的内部类。
3、匿名内部类。
对于这几种类型的访问规则,
示例程序如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
package lxg;
//定义外部类
public class OuterClass {
//外部类静态成员变量
private static String outer_static_string = "outer_static_string" ;
//外部类非静态成员变量
private String outer_string = "outer_string" ;
//定义静态嵌套类
private static class inner_static_class {
//静态嵌套类的静态成员变量
private static String inner_static_string = "inner_static_string" ;
//静态嵌套类的非静态成员变量
private String inner_string = "inner_string" ;
public void display( ) {
System.out.println( outer_static_string ); //静态嵌套类可以直接访问外部类的静态成员变量
// System.out.println(outer_string); //静态嵌套类不能直接访问外部类的非静态成员变量
System.out.println( inner_static_string ); //可以访问自己的静态成员变量
System.out.println( inner_string ); //可以访问自己的非静态成员变量
}
}
public void printInnerStatic( ) {
inner_static_class innStatic_class = new inner_static_class( );
innStatic_class.display( );
// System.out.println( inner_static_string ); //外部类不能直接访问静态嵌套类的成员变量
// System.out.println( inner_string ); //外部类不能直接访问静态嵌套类的成员变量
System.out.println( innStatic_class.inner_static_string ); //外部类可以通过类对象来访问静态嵌套类的成员变量
System.out.println( innStatic_class.inner_string ); //外部类可以通过嵌套类的类对象来直接访问静态嵌套类的私有成员变量
}
//外部类直接定义内部类
private class inner_class {
private String inner_string = "inner_string" ;
public void display(){
System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量
}
}
public void printInner(){
inner_class innClass = new inner_class( );
System.out.println(innClass.inner_string); //外部类可以通过内部类的类对象来直接访问内部类类的私有成员变量
}
public void inner_function(){
//函数中定义内部类
class inner_function_class {
private String inner_function_string = "inner_function_string" ;
public void printInnerFunction(){
System.out.println(outer_static_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(outer_string); //内部类可以直接访问外部类的静态成员变量
System.out.println(inner_function_string); //可以直接访问自己的成员变量
}
}
inner_function_class inner = new inner_function_class( );
System.out.println(inner.inner_function_string); //外部类可以通过内部类的类对象来直接访问内部类的私有成员变量
}
public void printinnerfunction(){
// inner_function_class inner = new inner_function_class( ); //函数中定义的内部类,只在所属的函数内可见
}
}
|
通过示例程序可以看出:
1、对于静态嵌套类,其访问规则与静态成员变量相似,即静态方法不能直接访问非静态成员
2、对于内部类,可以直接访问外部类的成员变量
3、对于外部类,可以通过内部类的对象来访问内部类的私有成员变量,这一点与通常认为的访问规则差别较大
4、匿名内部类与在函数中定义的内部类相似,只在该函数内部可见。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/lxgwm2008/article/details/7703888
相关文章
猜你喜欢
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
如何在IDEA中对 hashCode()和 equals() 利用快捷键快速进行方法重写
2025-05-29 82 -
2025-05-29 74
-
2025-06-04 37
-
springMvc注解之@ResponseBody和@RequestBody详解
2025-05-29 103 -
2025-06-04 91
热门评论