黑马程序员技术交流社区
标题:
有人可以解释下多态这道题么
[打印本页]
作者:
pal_xie
时间:
2016-5-10 23:53
标题:
有人可以解释下多态这道题么
public class Test200 {
/**
* @param args
*/
public static void main(String[] args) {
A a = new B();
a.show();
B b = new C();
b.show();
}
}
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
public void show() {
super.show();
}
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show() {
super.show();
}
public void show2() {
System.out.println("你");
}
}
复制代码
输出的是 爱 你
public class Test200 {
/**
* @param args
*/
public static void main(String[] args) {
A a = new B();
a.show();
B b = new C();
b.show();
}
}
class A {
public void show() {
show2();
}
public void show2() {
System.out.println("我");
}
}
class B extends A {
public void show() {
super.show2();
}
public void show2() {
System.out.println("爱");
}
}
class C extends B {
public void show() {
super.show();
}
public void show2() {
System.out.println("你");
}
}
复制代码
输出的是 我 我
两段的代码差别是 类B里show()方法 里super.show()改成了super.show2()
作者:
a843443554
时间:
2016-5-11 00:42
a调用B里的show()方法。B的show方法又调用了父类A的show()方法,A的show()方法里定义调用show2()方法。a输出B里的show2方法。输出 爱
b调用C里面的show()方法,C里的show()方法又调用了C父类B的show()方法,B的show()方法调用了A的show()方法,A的show()方法定义调用了show2()方法。b输出了C里面的show2()方法。 输出 你
你写的那个
a调用B里的show()方法。B的show方法又调用了父类A的show2()方法 直接输出 我
b调用C里面的show()方法,C里的show()方法又调用了C父类B的show()方法,B的show()方法调用了A的show2()方法,又直接输出了 我。
作者:
xzy645181797
时间:
2016-5-11 01:35
方法就是编译看左边,运行看右边。能不能编译通过就看父类里有没有这个方法,运行看右边就是运行的时候运行子类里面的该方法。用这个公式去套就可以了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2