黑马程序员技术交流社区
标题:
【黑马程序员】方法的面试题(多态)
[打印本页]
作者:
huburt
时间:
2016-5-24 11:24
标题:
【黑马程序员】方法的面试题(多态)
Override和Overload的区别?
Override是方法重写:子类中出现了和父类中方法声明一模一样的方法。(静态方法不可以重写)
Overload是方法重载:本类中出现的方法名一样,参数列表不同的方法。
Override和Overload能改变返回值类型吗?
Override的返回值类型需要与父类一致。
overload可以改变返回值类型,只看参数列表。
多态中的题目分析题
A:看下面程序是否有问题,如果没有,说出结果
class Fu {
public void show() {
System.out.println("fu show");
}
}
class Zi extends Fu {
public void show() {
System.out.println("zi show");
}
public void method() {
System.out.println("zi method");
}
}
class Test1Demo {
public static void main(String[] args) {
Fu f = new Zi();
f.method();
f.show();
}
}
复制代码
答:程序出错,f中没有method方法,编译不通过
B:看下面程序是否有问题,如果没有,说出结果
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
public void show() {
show2();
}
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show2() {
System.out.println("你");
}
}
public class Test2DuoTai {
public static void main(String[] args) {
A a = new B();
a.show();
B b = new C();
b.show();
}
}
复制代码
答:正确
输出结果:爱
你
分析: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