首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

11.3  嵌套类

面试例题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

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论