📜  Java程序的输出 |第 51 集(常规内部类)

📅  最后修改于: 2022-05-13 01:56:10.917000             🧑  作者: Mango

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。但不是强制使用。