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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张迁 中级黑马   /  2013-4-29 21:55  /  1071 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类可以被很多类继承,有没有可能这样一种情况,我在抽象类里面写一个带对象参数的抽象方法,如下代码所示,请问可以实现吗??可以实现的话,这个类参数该怎写呢?
  1. class Demo6 {
  2.         public static void main(String[] args) {
  3.                 Programmer p = new Programmer("asd","123",8000);
  4.                 p.work();
  5.                 Manager m =new Manager("zxc","456",20000,5000);
  6.                 m.work();
  7.         }
  8. }
  9. abstract class Employee{
  10.         private String name;
  11.         private String id;
  12.         private int pay;
  13.         private int bonus;

  14.         public abstract void work(类参数);

  15.         Employee(){};
  16.         Employee(String name,String id,int pay){
  17.                 this.name = name;
  18.                 this.id = id;
  19.                 this.pay = pay;
  20.         };
  21.         Employee(String name,String id,int pay,int bonus){
  22.                 this.name = name;
  23.                 this.id = id;
  24.                 this.pay = pay;
  25.                 this.bonus = bonus;
  26.         };

  27.         public String getName(){
  28.                 return name;
  29.         }
  30.         public String getId(){
  31.                 return id;
  32.         }
  33.         public int getPay(){
  34.                 return pay;
  35.         }
  36.         public int getBonus(){
  37.                 return bonus;
  38.         }
  39.        
  40.         public void speak(){
  41.                 if(bonus == 0)
  42.                 System.out.println("我是"+name+",我的ID是"+id+"我的工资是:"+pay+",我没有奖金。");
  43.                 else
  44.                         System.out.println("我是"+name+",我的ID是"+id+"我的工资是:"+pay+"奖金是:"+bonus);
  45.         }
  46.        
  47. }

  48. class Programmer extends Employee{
  49.         Programmer(){};
  50.         Programmer(String name,String id, int pay){
  51.                 super(name,id,pay);
  52.         };
  53.         public void work(类参数){
  54.                 System.out.println("我是程序员,我的工作是编程!");
  55.                 类.speak();
  56.        
  57.         }
  58. }

  59. class Manager extends Employee{
  60.         Manager(){};
  61.         Manager(String name,String id,int pay,int bonus){
  62.                 super(name,id,pay,bonus);
  63.         };
  64.         public void work(类参数){
  65.                 System.out.println("我是经理,我的工作是管理!");
  66.                 类.speak();
  67.         }
  68. }
复制代码
抽象类可以被很多类继承,有没有可能这样一种情况,我在抽象类里面写一个带对象参数的抽象方法,如下代码所示,请问可以实现吗??可以实现的话,这个类参数该怎写呢?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

1 个回复

倒序浏览
=-= 你好像和我就是一个班的说

类可以作为参数传递,你这个代码我没改成功,不过类作为形参传递成功了
构造函数的大括号结尾应该是不能加分号的吧·····
  1. class Demo6 {
  2.         public static void main(String[] args) {
  3.                 Programmer p = new Programmer("asd","123",8000);
  4.                                 CeShi cs = new CeShi();
  5.                 p.work(cs);
  6.                 Manager m =new Manager("zxc","456",20000,5000);
  7.                 m.work(cs);
  8.         }
  9. }

  10. [color=Red]//这个类是我新建的,就是为了测试看看能不能传递。感觉这个和对象传递很像,就像老师之前举例子说两个人比较年龄,传递的是Person的对象,而不是直接传//递age
  11. class CeShi {[/color]
  12.        
  13.         public void speak(){
  14. //                if(bonus == 0)
  15. //                        System.out.println("我是"+getName()+",我的ID是"+getId()+"我的工资是:"+getPay()+",我没有奖金。");
  16. //                else
  17. //                         System.out.println("我是"+getName()+",我的ID是"+getId()+"我的工资是:"+getPay()+"奖金是:"+getBonus());
  18.         System.out.println("22222222222");
  19.                 }
  20.        
  21. }
  22. abstract class Employee{
  23.         private String name;
  24.         private String id;
  25.         private int pay;
  26.         private int bonus;

  27.         public abstract void work(CeShi cs);

  28.         Employee(){}
  29.         Employee(String name,String id,int pay){
  30.                 this.name = name;
  31.                 this.id = id;
  32.                 this.pay = pay;
  33.         }
  34.         Employee(String name,String id,int pay,int bonus){
  35.                 this.name = name;
  36.                 this.id = id;
  37.                 this.pay = pay;
  38.                 this.bonus = bonus;
  39.         }

  40.         public String getName(){
  41.                 return name;
  42.         }
  43.         public String getId(){
  44.                 return id;
  45.         }
  46.         public int getPay(){
  47.                 return pay;
  48.         }
  49.         public int getBonus(){
  50.                 return bonus;
  51.         }
  52.         
  53.         
  54.         
  55. }

  56. class Programmer extends Employee{
  57.         Programmer(){}
  58.         Programmer(String name,String id, int pay){
  59.                 super(name,id,pay);
  60.         }
  61.         public void work(CeShi cs){
  62.                 System.out.println("我是程序员,我的工作是编程!");
  63.                 cs.speak();
  64.         
  65.         }
  66. }

  67. class Manager extends Employee{
  68.         Manager(){}
  69.         Manager(String name,String id,int pay,int bonus){
  70.                 super(name,id,pay,bonus);
  71.         }
  72.         public void work(CeShi cs){
  73.                 System.out.println("我是经理,我的工作是管理!");
  74.                 cs.speak();
  75.         }
  76. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马