先决条件: 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) 在极客堆里 c) 编译错误 d) 运行时错误
答案。 (b) 说明: GFG类的引用变量用于指向GeeksForgeks类的对象。在编译时,JVM会检查被调用的方法是否在GFG类中定义,但在运行时,JVM会调用Geeksforgeks类的方法,因为对象来自Geeksforgeks类。提到 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) 极客 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) 极客 d) 这些都不是
答案。 (a) 说明: GFG引用变量用于存储Geeksforgeks对象。在编译时,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) 这些都不是
答案。 (a) 说明: 类极客实现了GFG接口。所以GFG接口中声明的所有方法都会被复制到Geeks类中。因此,当在上面程序的第1行调用getInfo方法时,编译器会检查Geeks类中是否存在getInfo方法,因为Geeks类型的变量正被用来引用测试对象。
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) 极客
答案。 (a) 说明: 子类引用变量不能用于存储父类的实例。
本文由 马扬克·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。