Java程序的输出|第 15 组(内部类)
先决条件:-本地内部类,匿名内部类
1)以下Java程序的输出是什么?
public class Outer
{
public static int temp1 = 1;
private static int temp2 = 2;
public int temp3 = 3;
private int temp4 = 4;
public static class Inner
{
private static int temp5 = 5;
private static int getSum()
{
return (temp1 + temp2 + temp3 + temp4 + temp5);
}
}
public static void main(String[] args)
{
Outer.Inner obj = new Outer.Inner();
System.out.println(obj.getSum());
}
}
一)15
b) 9
c) 5
d) 编译错误
答。 (四)
说明:静态内部类不能访问外部类的非静态字段。
2) 以下程序的输出是什么?
public class Outer
{
private static int data = 10;
private static int LocalClass()
{
class Inner
{
public int data = 20;
private int getData()
{
return data;
}
};
Inner inner = new Inner();
return inner.getData();
}
public static void main(String[] args)
{
System.out.println(data * LocalClass());
}
}
a) 编译错误
b) 运行时错误
c) 200
d) 以上都不是
答。 (C)
说明: LocalClass() 方法定义了一个本地内部类。此方法创建类 Inner 的对象并返回驻留在其中的变量数据的值。
3) 以下程序的输出是什么?
interface Anonymous
{
public int getValue();
}
public class Outer
{
private int data = 15;
public static void main(String[] args)
{
Anonymous inner = new Anonymous()
{
int data = 5;
public int getValue()
{
return data;
}
public int getData()
{
return data;
}
};
Outer outer = new Outer();
System.out.println(inner.getValue() + inner.getData() + outer.data);
}
}
一)25
b) 编译错误
c) 20
d) 运行时错误
答。 (二)
说明:方法 getData() 在 Anonymous 类中未定义,导致编译错误。
4)以下Java程序的输出是什么?
public class Outer
{
private int data = 10;
class Inner
{
private int data = 20;
private int getData()
{
return data;
}
public void main(String[] args)
{
Inner inner = new Inner();
System.out.println(inner.getData());
}
}
private int getData()
{
return data;
}
public static void main(String[] args)
{
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
System.out.printf("%d", outer.getData());
inner.main(args);
}
}
a) 2010 年
b) 1020
c) 编译错误
d) 这些都不是
答。 (二)
说明:虽然上面定义的内部类可以访问外部类的私有变量数据,但是在内部类中声明变量数据使其特定于内部类,在变量声明方面没有冲突。有关更多信息,请参阅阴影
5) 以下程序的输出是什么?
interface OuterInterface
{
public void InnerMethod();
public interface InnerInterface
{
public void InnerMethod();
}
}
public class Outer implements OuterInterface.InnerInterface, OuterInterface
{
public void InnerMethod()
{
System.out.println(100);
}
public static void main(String[] args)
{
Outer obj = new Outer();
obj.InnerMethod();
}
}
一)100
b) 编译错误
c) 运行时错误
d) 以上都不是
答。 (一种)
说明:嵌套接口在Java中定义。由于两个接口都有 InnerMethod() 的声明,因此实现它一次对 InnerInterface 和 OuterInterface 都有效。