|
11.3 嵌套类 ( 本章字数:1357) |
面试例题1:请说明static nested class和inner class的不同。 答案: 1.nested(嵌套)class(一般是C++的说法) nested class是合成型聚集关系(Composite Aggregation)的另一种表达方式,也就是说nested class也可以用Aggregation表达出来。但是,nested class更加精确地表达了一种专用的、紧耦合的关系,尤其在代码生成时,nested class在Java中映射成inline class。比如,计算机专用开关电源类可以作为计算机类的nested class,但是,电池组类就不一定适合作为计算机类的nested class,因为,电池组类表述的是一个过于通用的对象,可能还被包含(Aggregation)于模型中的其他设备对象。class A nested in class B,则说明A是一个nested class,一般A是用来完成B中的某种重要功能的。 2.inner class(一般是Java的说法) Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。 静态内部类(inner class)意味着:创建一个static内部类的对象,不需要一个外部类对象;不能从一个static内部类的一个对象访问一个外部类对象。 面试例题2:关于下面类的定义,以下哪种说法是正确的?[研华科技2005年11月面试题] public class Droitwich{ class one{ private class two{ public void main(){ System.out.println("two"); } } }} A.此代码不能编译成功,因为该类嵌套了不止一层 B.此代码不能编译通过,因为class two是私有的 C.此代码可以编译通过,并且在运行的时候输出字符串two D.此代码编译没有错误 解析: 内部类或嵌套类在类层级上没有限制,所以选项A是错误的。 内部类可以是私有类,所以选项B也是错误的。 选项C的main方法不是public static void main的,并且假设命令行是java Droitwich,它不能在任何地方被调用。 答案:D |
| 上一页 返回书目 下一页 |