详解Java 中的嵌套类与内部类

2025-05-29 0 55

详解Java 中的嵌套类内部类

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 详解Java 中的嵌套类与内部类 https://www.kuaiidc.com/114720.html

相关文章

发表评论
暂无评论