📌  相关文章
📜  教资会网络 | UGC NET CS 2016 年 7 月 – III |问题 48(1)

📅  最后修改于: 2023-12-03 15:10:15.259000             🧑  作者: Mango

UGC NET CS 2016 年 7 月 – III |问题 48

这个问题是关于一段Java代码的分析和输出结果。整个问题涉及了Java中面向对象的一些重要概念,包括继承、多态和抽象类等。

该代码段定义了一个抽象类AA中有一个抽象方法a()和一个非抽象方法b()A还有一个静态内部类CC中有一个非静态方法c()。然后,A的子类B被定义,并实现了a()方法。B的方法a()中还创建了一个C类的实例,并调用了Cc()方法。

接着是一个Main类,其中创建了一个B对象并调用了其b()a()方法。这个问题的关键是看看这个程序的输出。

abstract class A{
  A(){}
  public abstract void a();
  public void b(){System.out.println("B");}
  public static class C{
    public void c(){System.out.println("C");}
  }
}
class B extends A{
  B(){}
  public void a(){
    C obj = new C();
    obj.c();
  }
}
public class Main{
  public static void main(String[] args){
    B obj = new B();
    obj.b();
    obj.a();
  }
}

输出结果:

B
C

在这个程序中,首先生成了一个B类的对象,并调用了它的b()方法。由于B类是A类的子类,因此它也继承了A类中的b()方法,而该方法只是简单地输出“B”。

接着,调用了B类中的a()方法。在a()方法中,创建了一个C类的对象,并调用了它的c()方法。这里需要注意的是,C是一个静态内部类。因此,我们不需要实例化A对象就可以直接使用它。C类的c()方法只是简单地输出“C”。

因此,程序输出的结果是“B”和“C”。