黑马程序员技术交流社区

标题: 麻烦帮我分析一下这是如何初始化的? [打印本页]

作者: 王广亚    时间: 2013-7-5 17:44
标题: 麻烦帮我分析一下这是如何初始化的?
本帖最后由 王广亚 于 2013-7-5 18:35 编辑

在视频教程中学继承的时候毕老师只是用简单的代码介绍了一下但是复杂的我还是不会分析请帮我分析分析这个程序的子类创建对象时是如何一步一步来创建的最重要的是调用父类的构造函数那块。
  1. <p>public class question {
  2. public static void main(String[] args) {
  3.   Pro p=new Pro("zhangsan","jisu01",1000);
  4.   System.out.print(p.getName());
  5. }
  6. }
  7. abstract class Employee{
  8. private String name;
  9. private String id;
  10. private double pay;
  11. Employee(String name,String id,double pay){
  12.   this.setName(name);
  13.   this.id=id;
  14.   this.pay=pay;
  15. }
  16. public abstract void work();
  17. public void setName(String name) {
  18.   this.name = name;
  19. }
  20. public String getName() {
  21.   return name;
  22. }
  23. }
  24. class Manager extends Employee{
  25. private int bonus;
  26. Manager(String name,String id,double pay,int bonus){
  27.   super(name,id,pay);
  28.   this.bonus=bonus;
  29. }
  30. public void work(){
  31.   System.out.print("manager work");
  32. }
  33. }
  34. class Pro extends Employee{</p><p> Pro(String name, String id, double pay) {
  35.   super(name, id, pay);
  36. }
  37. public void work(){
  38.   System.out.print("Por work");
  39. }
  40. }
  41. </p><p> </p>
复制代码

作者: 郑先明    时间: 2013-7-5 18:20
  1. public class question
  2. {
  3.         public static void main(String[] args)//1, 进入程序
  4.                 {
  5.                         Pro p= new Pro("zhangsan","jisu01",1000);//2, 在堆内存创建对象Pro
  6.                         System.out.print(p.getName());//6, 然后变量p调用getName()
  7.                         //8, 之前初始化好的变量name值为zhangsan, 就输出了zhangsan,
  8.                 }
  9. }
  10. abstract class Employee//4, 于是继承到了这句,
  11. {
  12.         private String name;
  13.         private String id;
  14.         private double pay;
  15.         Employee(String name,String id,double pay)//5, 因为有继承的关系,直接就执行到了父类的构造代码块,
  16.         //然后进行一系列赋值动作, 这不是很好理解吗?
  17.                 {
  18.                         this.setName(name);
  19.                         this.id=id;
  20.                         this.pay=pay;
  21.                 }
  22. public abstract void work();
  23. public void setName(String name)
  24.         {
  25.                 this.name = name;
  26.         }
  27. public String getName()//7, 然后返回变量name的值
  28.         {
  29.                 return name;
  30.         }
  31. }
  32. class Manager extends Employee
  33. {
  34.         private int bonus;
  35.         Manager(String name,String id,double pay,int bonus)
  36.                 {
  37.                         super(name,id,pay);
  38.                         this.bonus=bonus;
  39.                 }
  40. public void work()
  41.                 {
  42.                         System.out.print("manager work");
  43.                 }
  44. }
  45. class Pro extends Employee//3, 执行到这句, 但是因为继承了父类Empioyee
  46. {
  47.         Pro(String name, String id, double pay)
  48.                 {
  49.                         super(name, id, pay);
  50.                 }
  51.         public void work()
  52.                 {
  53.                         System.out.print("Por work");
  54.                 }
  55. }
复制代码
我不知道楼主哪里不明白...我写的也不是很详细, 但是具体的步骤应该就是i这样的吧...




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