📜  Java程序的输出|第 15 组(内部类)

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

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 都有效。