java炒冷饭系列12 嵌套类(静态内部类)
来源:互联网 发布:windows用户管理工具 编辑:程序博客网 时间:2024/05/23 13:47
如果不需要内部类对象与外围对象之间有联系,那么可以将内部类声明为static。这通常称为嵌套类。想要理解static就用于内部类时的含义,就必须记住,普通的内部类对象隐式地保存了一个引用,指向创建它的外围类对象。然而,当内部类是static的时候,就不是这样了。嵌套类意味着:
- 要创建嵌套类的对象,并不需要其外围类的对象
- 不能从嵌套类的对象中访问非静态的外围类对象
嵌套类与普通的内部类还有一个区别:普通内部类的字段与方法(这里应该是静态字段与方法),只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类。但是嵌套类可以包含所有这些东西。
public class Parcel11 { private static class ParcelContents implements Contents { private int i = 11; @Override public int value() { return i; } } protected static class ParcelDestination implements Destination{ private String label; private ParcelDestination(String whreTo){ label = whreTo; } @Override public String readLabel() { return label; } public static void f(){} static int x = 10; static class AntherLevel{ public static void f(){} static int x = 10; } } public static Destination destination(String s){ return new ParcelDestination(s); } public static Contents contents(){ return new ParcelContents(); } public static void main(String[] args) { Contents c = contents(); Destination d = destination("Tasmania"); }}
在main()中没有任何Parcel11的对象是必需的;而是使用选取static成员的普通语法来调用方法--这些方法返回的Contents和Destination的引用。
在一个普通的(非static)内部类中,通过一个特殊的this引用可以链接到其外围类对象。嵌套类就没有这个特殊的this引用,这使得它类似于一个static方法。
练习:创建一个包含嵌套类的类。在main()中创建其内部类的实例
public class OutWithStaticInner { static class Inner{} public static void main(String[] args) { //注意普通内部类与静态内部类在实例化的区别哦 OutWithStaticInner.Inner oi = new OutWithStaticInner.Inner(); }}
练习:创建一个包含了内部类的类,而此内部类又包含有内部类。使用嵌套类重复这个过程。注意编译器生成的.class文件的名字
public class One { public class Two{ public class Three{ } } public static void main(String[] args) { new One().new Two().new Three(); }}
用javac编译以后得到如下结果
$ javac One.java$ ls *.classOne.class One$Two.class One$Two$Three.class
参考文献
《Java编程思想》10.7嵌套类
阅读全文
0 0
- java炒冷饭系列12 嵌套类(静态内部类)
- java炒冷饭系列14 内部类标识符
- java炒冷饭系列13 内部类的继承
- java静态内部类(嵌套类)
- Java静态内部类(嵌套类)
- Java静态内部类(嵌套类)
- java静态内部类(嵌套类)
- JAVA 静态嵌套类、内部类
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- Java中的嵌套类、内部类、静态内部类
- java炒冷饭系列09 内部类的创建和链接到外部类
- java内部类,内部类的共性,成员内部类,方法内部类匿名内部类,静态嵌套类,不解
- java炒冷饭系列11 方法和作用域内的内部类 与 匿名内部类
- java静态嵌套类 或叫 静态内部类
- Java中的内部类 普通嵌套类 局部内部类 匿名内部类 静态内部类 浅析
- 【Java学习笔记】静态嵌套类和内部类
- solr通过http请求删除数据
- 导航栏随屏幕移动而变化
- mysql数据使用非默认编码进行查询的问题
- 【多线程】一个简单的线程池Demo
- Linux中使用sed命令替换字符串小结
- java炒冷饭系列12 嵌套类(静态内部类)
- faster rcnn代码阅读
- Android自动获取焦点并弹出输入法的问题
- 《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确
- servlet创建接口
- WIN10环境下MAVEN的安装与配置
- jdk源码学习----1.如何查看jdk源码
- C语言,如何打印出程序中出错的位置
- imgproc模块--模板匹配