📜  Java程序的输出|第 25 组(多态)

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

Java程序的输出|第 25 组(多态)

先决条件: Java的多态性

1) 以下程序的输出是什么?

class GFG
{
    protected void getData()
    {
        System.out.println("Inside GFG");
    }
}
class GeeksforGeeks extends GFG
{
    protected void getData()
    {
        System.out.println("Inside GeeksforGeeks");
    }
}
  
public class Test
{
    public static void main(String[] args)
    {
        GFG obj = new GeeksforGeeks();
        obj.getData();
    }
}

a) GFG 内部
b) GeeksforGeeks 内部
c) 编译错误
d) 运行时错误

答。 (二)
说明: GFG 类的引用变量用于指向 GeeksforGeeks 类的对象。编译时JVM会检查被调用的方法是否定义在GFG类中,但运行时JVM会调用GeeksforGeeks类的方法,因为该对象来自GeeksforGeeks类。有关更多详细信息,请参阅Java的静态与动态绑定。

2) 以下程序的输出是什么?



class Test
{
    void myMethod()
    {
        System.out.println("GeeksforGeeks");
    }
}
public class Derived extends Test
{
    void myMethod()
    {
        System.out.println("GFG");
    }
      
    public static void main(String[] args)
    {
        Derived object = new Test();
        object.myMethod();
    }
}

a) GeeksforGeeks
b) GFG
c) 编译错误
d) 运行时错误

答。 (C)
说明:子类不能用作超类对象的引用。

3) 以下程序的输出是什么?

class GFG
{
    protected void getData()
    {
        System.out.println("Inside GFG");
    }
}
class GeeksforGeeks extends GFG
{
    protected void getData()
    {
        System.out.println("Inside GeeksforGeeks");
    }
      
    protected void getValue()
    {
        System.out.println("GeeksforGeeks");
    }
}
  
public class Test
{
    public static void main(String[] args)
    {
        GFG obj = new GeeksforGeeks();
        obj.getValue();
    }
}

a) 编译错误
b) 运行时错误
c) GeeksforGeeks
d) 这些都不是

答。 (一种)
说明: GFG 引用变量用于存储 GeeksforGeeks 对象。在编译时,JVM 在 GFG 类中查找 getValue 方法。检测到它不存在,JVM 会抛出一个编译时错误。有关更多详细信息,请参阅Java的静态与动态绑定。

4) 以下程序的输出是什么?

interface GFG
{
    void myMethod();
    void getInfo();
}
  
abstract class Geeks implements GFG
{
    void getData()
    {
        System.out.println("GFG");
    }
}
  
public class Test extends Geeks
{
    public void myMethod()
    {
        System.out.println("GeeksforGeeks");
    }
    public void getInfo()
    {
        System.out.println("Geeks");
    }
      
    public static void main(String[] args)
    {
        Geeks obj = new Test();
        obj.getInfo();
    }
}

a) 极客
b) 编译错误
c) 运行时错误
d) 这些都不是

答。 (一种)
说明: Class Geeks 实现了 GFG 接口。所以在 GFG 接口中声明的所有方法都被复制到 Geeks 类中。因此,当在上面程序的第 1 行调用 getInfo 方法时,编译器会检查 Geeks 类中是否存在 getInfo 方法,因为 Geeks 类型的变量正用于引用 Test 对象。

5) 以下程序的输出是什么?

class Test
{
    public void gfg()
    {
        System.out.println("GeeksforGeeks");
    }
}
public class Derived extends Test
{
    public void gfg()
    {
        System.out.println("GFG");
    }
    public static void main(String[] args)
    {
        Derived obj = new Test();
        obj.gfg();
    }
}

a) 编译错误
b) 运行时错误
c) GFG
d) GeeksforGeeks

答。 (一种)
说明:子类引用变量不能用于存储父类的实例。