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
答。 (一种)
说明:子类引用变量不能用于存储父类的实例。