A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pal_xie 中级黑马   /  2016-5-10 23:53  /  458 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test200 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 A a = new B();
  7.         a.show();

  8.         B b = new C();
  9.         b.show();
  10.         }

  11. }
  12. class A {
  13.     public void show() {
  14.         show2();
  15.     }
  16.     public void show2() {
  17.         System.out.println("我");
  18.     }
  19. }
  20. class B extends A {
  21.     public void show() {
  22.         super.show();
  23.     }
  24.     public void show2() {
  25.         System.out.println("爱");
  26.     }
  27. }
  28. class C extends B {
  29.     public void show() {
  30.         super.show();
  31.     }
  32.     public void show2() {
  33.         System.out.println("你");
  34.     }
  35. }
复制代码

输出的是  爱  你
  1. public class Test200 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 A a = new B();
  7.         a.show();

  8.         B b = new C();
  9.         b.show();
  10.         }

  11. }
  12. class A {
  13.     public void show() {
  14.         show2();
  15.     }
  16.     public void show2() {
  17.         System.out.println("我");
  18.     }
  19. }
  20. class B extends A {
  21.     public void show() {
  22.         super.show2();
  23.     }
  24.     public void show2() {
  25.         System.out.println("爱");
  26.     }
  27. }
  28. class C extends B {
  29.     public void show() {
  30.         super.show();
  31.     }
  32.     public void show2() {
  33.         System.out.println("你");
  34.     }
  35. }
复制代码

输出的是 我  我
两段的代码差别是   类B里show()方法   里super.show()改成了super.show2()

2 个回复

正序浏览
方法就是编译看左边,运行看右边。能不能编译通过就看父类里有没有这个方法,运行看右边就是运行的时候运行子类里面的该方法。用这个公式去套就可以了。
回复 使用道具 举报
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()方法,又直接输出了 我。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马