黑马程序员技术交流社区

标题: 多态的执行顺序 [打印本页]

作者: 透过生活    时间: 2014-1-24 10:17
标题: 多态的执行顺序
本帖最后由 透过生活 于 2014-2-16 18:47 编辑

对于多态的理解,有点不太懂。我想知道这个小程序的执行顺序。求详解

abstract class Student{
public abstract void study();
public void sleep(){
  System.out.println("天天睡觉");
}
}
class DoStudent{
public void do(Student s){
  s.study();
  s.sleep();
}
}

class BaseStudent extends Student{
public void study(){
  System.out.println("bese study");
}
}
class AdvStudent extends Student{
public void study(){
  System.out.println("adv study");
}
public void sleep(){
  System.out.println("夜夜睡觉");
}
}
public class Test{
public static void main(String args []){
  DoStudent ds = new DoStudent();
  ds.do(new BaseStudent());
  ds.do(new AdvStudent());
}
}

作者: 廉伟杰    时间: 2014-1-24 14:20
步骤是:1:base  study      天天睡觉
             2:adv study        夜夜睡觉
作者: 放课后小朋友    时间: 2014-1-24 15:19
  1. abstract class Student{//定义抽象类,不用说,里面的抽象方法就是用来被实现的
  2. public abstract void study();//抽象方法
  3. public void sleep(){//平常方法
  4.    System.out.println("天天睡觉");
  5. }
  6. }
  7. class DoStudent{
  8. public void f(Student s){//方法中的参数传入的是Student类型的引用s
  9.    s.study();//调用的是Student类中的方法
  10.    s.sleep();//同上
  11. }
  12. }

  13. class BaseStudent extends Student{//继承Student,这也是抽象类的人生意义
  14. public void study(){
  15.    System.out.println("bese study");//实现抽象方法
  16. }
  17. }
  18. class AdvStudent extends Student{//同上
  19. public void study(){
  20.    System.out.println("adv study");//同上
  21. }
  22. public void sleep(){//复写sleep方法
  23.    System.out.println("夜夜睡觉");
  24. }
  25. }
  26. public class TestTest{
  27. public static void main(String args []){
  28.    DoStudent ds = new DoStudent();
  29.    ds.f(new BaseStudent());//结果:bese Study     天天睡觉
  30.    ds.f(new AdvStudent());//结果:adv study     爷爷睡觉
  31. }
  32. }
复制代码


执行顺序就是:由上到下执行。。。

--------------个人总结,请勿复制,更勿粘贴,可以照写{:soso_e144:}----------------




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