Java程序的输出 |第 51 集(常规内部类)
先决条件: Java的内部类
1. 内部类的 .class 文件名是什么?
class Outer {
class Inner {
public
void m1()
{
System.out.println("Hello Geeks");
}
}
}
选项:
1.外.内.类
2.内部类
3.外部类
4.外部$内部.class
输出:
The answer is option (4)
说明: Java编译器在内部类的情况下创建两个类文件。内部类的类文件名为“Outer$Inner”。 $ 符号用于表示内部类。
2. 如果我们在命令提示符下使用Java Outer$Inner,下面程序的输出是什么?
class Outer {
class Inner {
public
void m1()
{
System.out.println("Hii");
}
} public static void main(String[] args)
{
Outer o = new Outer();
o.m1();
}
}
选项:
1.嗨
2.编译时错误
3.运行时错误
4.无输出
输出:
The answer is option (3)
说明:众所周知,编译器不负责检查类是否包含 main() 方法。但是在执行 JVM 期间检查类是否包含 main() 方法。如果该类不包含 main() 方法,那么我们将收到运行时错误,提示 NoSuchMethodError:main。
3. 下面程序的输出是什么?
class Outer {
class Inner {
public
static void main()
{
System.out.println("Hii");
}
} Outer o = new Outer();
o.main();
}
选项:
1.嗨
2.运行时间
3.编译时错误
4.无输出
输出:
The answe is option (3)
说明:在上面的程序中,我们会得到编译时错误,提示“内部类不能有静态声明”,在程序中我们声明了一个静态方法。
4.哪个选项适合替换为Line-1来访问Inner类的m1()方法?
class Outer {
class Inner {
public
void m1()
{
System.out.println("Hii");
}
} public static void main(String[] args)
{
Line - 1
}
}
选项:
1.外层o=新外层();
Outer.Inner i=o.new Inner();
i.m1();
2.Outer.Inner i=new Outer().new Inner();
i.m1();
3.new 外层().new 内层().m1();
4.无
输出:
The answer is option (1), (2), (3)
说明:在内部类的概念中,我们首先要创建外部类的对象,然后借助外部类对象我们可以创建内部类的对象。借助内部类对象,我们可以访问内部类的实例方法。
5.以下关于 Normal/Regular 内部类的说法正确的是?
1.必须标为final。
2.可以标记为原生。
3.必须是公开的。
4.可以标记为静态。
输出:
The answer is option (4)
说明: Regular/Normal Inner 类的适用修饰符是 public、final、default、strictfp、abstract、private、protected、static。但不是强制使用。