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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 透过生活 高级黑马   /  2014-1-24 10:17  /  1362 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 透过生活 于 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());
}
}

2 个回复

倒序浏览
步骤是:1:base  study      天天睡觉
             2:adv study        夜夜睡觉
回复 使用道具 举报
  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:}----------------
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马