黑马程序员技术交流社区

标题: 【黑马程序员】方法的面试题(多态) [打印本页]

作者: huburt    时间: 2016-5-24 11:24
标题: 【黑马程序员】方法的面试题(多态)
Override和Overload的区别?
Override是方法重写:子类中出现了和父类中方法声明一模一样的方法。(静态方法不可以重写)
Overload是方法重载:本类中出现的方法名一样,参数列表不同的方法。

Override和Overload能改变返回值类型吗?
Override的返回值类型需要与父类一致。
overload可以改变返回值类型,只看参数列表。

多态中的题目分析题
A:看下面程序是否有问题,如果没有,说出结果
  1. class Fu {
  2.     public void show() {
  3.         System.out.println("fu show");
  4.     }
  5. }

  6. class Zi extends Fu {
  7.     public void show() {
  8.         System.out.println("zi show");
  9.     }

  10.     public void method() {
  11.         System.out.println("zi method");
  12.     }
  13. }

  14. class Test1Demo {
  15.     public static void main(String[] args) {
  16.         Fu f = new Zi();
  17.         f.method();
  18.         f.show();
  19.     }
  20. }
复制代码


答:程序出错,f中没有method方法,编译不通过

B:看下面程序是否有问题,如果没有,说出结果
  1. class A {
  2.     public void show() {
  3.         show2();
  4.     }
  5.     public void show2() {
  6.         System.out.println("我");
  7.     }
  8. }
  9. class B extends A {
  10.     public void show() {
  11.         show2();
  12.     }
  13.     public void show2() {
  14.         System.out.println("爱");
  15.     }
  16. }
  17. class C extends B {

  18.     public void show2() {
  19.         System.out.println("你");
  20.     }
  21. }
  22. public class Test2DuoTai {
  23.     public static void main(String[] args) {
  24.         A a = new B();
  25.         a.show();

  26.         B b = new C();
  27.         b.show();
  28.     }
  29. }
复制代码


答:正确
输出结果:爱
               你
分析:A a = new B();
        a.show();
编译时a有show方法,运行时调用B类的show方法(多态),B类不是没有show方法吗?其实是有的!B类由于继承A类,实际上也是继承了A类的show方法:
public void show() {
        show2();
    }
B类show方法中又调用show2方法,调用者是A类的引用a,因此编译时看的是调用A的show2方法,运行时调用的是B类的show2方法。

分析:B b = new C();
         b.show();
同样地,编译时B有show方法,运行时调用C类的show方法(多态),C类中super.show()又调用父类B的show方法,父类B的show方法中又调用show2方法,而由于我们的实际对象时C类的,因此编译时调用B类show2方法,运行时调用C类的show2方法(多态)
作者: songpaul0135    时间: 2016-5-24 20:59
不错 不错 收藏了  有空详细看
作者: 小菜鸟。    时间: 2016-5-24 21:22
这不视频里的题目么,
作者: itlf    时间: 2016-5-24 21:25
过来看看先
作者: kunwenli    时间: 2016-5-24 22:24
不错不错  很好
作者: ︶夜戏乀梦红尘    时间: 2016-5-24 22:25
了解了解
作者: z736886202    时间: 2016-5-24 22:33
写的不错  努力学习啊  
作者: satana    时间: 2016-5-24 22:47
看看,学习学习
作者: 小忧伤    时间: 2016-5-24 23:01
谢谢分享
作者: hmCEO    时间: 2016-5-24 23:04
干货多发点,不错,加油啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2