# 问题与练习-嵌套类
# 问题
以下程序没有编译。你需要做什么来使它编译?为什么?
public class Problem { String s; static class Inner { void testMethod() { s = "Set from Inner"; } } }
1
2
3
4
5
6
7
8答案:删除 Inner 的 static 声明。静态内部类不能访问外部类的实例字段
使用 Java API文档 Box(在 javax.swing 程序包中) 帮助您回答以下问题。
静态嵌套类 Box 定义什么?
答案:Box.Filler
什么内部类 Box 定义?
答案:Box.AccessibleBox
Box 内在类的超类是什么?
答案:[java.awt.]Container.AccessibleAWTContainer
Box 你可以从任何类中使用哪些嵌套类?
答案:Box.Filler
如何创建一个实例 Box 的 Filler 类?
答案:
new Box.Filler(minDimension, prefDimension, maxDimension)
# 练习
获取文件 Class1.java。编译并运行 Class1。输出什么?
public class Class1 { protected InnerClass1 ic; public Class1() { ic = new InnerClass1(); } public void displayStrings() { System.out.println(ic.getString() + "."); System.out.println(ic.getAnotherString() + "."); } static public void main(String[] args) { Class1 c1 = new Class1(); c1.displayStrings(); } protected class InnerClass1 { public String getString() { return "InnerClass1: getString invoked"; } public String getAnotherString() { return "InnerClass1: getAnotherString invoked"; } } }
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答案:
InnerClass1: getString invoked. InnerClass1: getAnotherString invoked.
1
2