当前位置: 代码迷 >> Java相关 >> 不晓得错误在哪,大家帮忙找找。
  详细解决方案

不晓得错误在哪,大家帮忙找找。

热度:236   发布时间:2010-11-02 10:00:46.0
不晓得错误在哪,大家帮忙找找。
public interface IEmployee{
   //设置员工加薪基准值常量
   public static final double prize=1000.00;
  //声明给员工加薪的方法
   public abstract void addSalary();
}
上面定义的是接口IEmployee

―――――――――――――――――――――――――――――――――――
class Employee implements IEmployee{
   private String name;      //姓名属性
   private double salary;    //雇员薪水
   private String hireDay;   //雇员入职时间

   //含有参数的构造方法
   public Employee(String name,double salary,String hireDay){
     this.name=name;
     this.salary=salary;
     this.hireDay=hireDay;
}
   //用于获取雇员信息的方法
   public String getName(){
     return name;
}
   public void getInfo(){
     System.out.println("I'm Employee");
}
   public double getsalary(){
     return salary;
}
   public String gethireDay(){
     return hireDay;
}
   //定义接口中实现抽象方法
   public void addSalary(int n){
      salary+=prize*n;
}
}
public class UseIEmployee{
   public static void main(String ages[]){
      Employee e1=new Employee("张三",3000.00,"2005/05/20");
       e1.addSalary(1);
       System.out.println("name:"+e1.getName());
       e1.getInfo();
       System.out.println("salary:"+e1.getsalary());
       System.out.println("hireDay:"+e1.gethireDay()+"\n");
      Employee e2=new Employee("李四",5000.00,"2006/06/10");
       e2.addSalary(5);
       System.out.println("name:"+e2.getName());
       e2.getInfo();
       System.out.println("salary:"+e2.getsalary());
       System.out.println("hireDay:"+e2.gethireDay()+"\n");
}
}
接口类的实现UserIEmployee.java
但是运行结果
UseIEmployee.java:1: Employee 不是抽象的,并且未覆盖 IEmployee 中的抽象方法 addS
alary()
class Employee implements IEmployee{
^
1 错误
大家帮忙看看,Employee里
   public void addSalary(int n){
      salary+=prize*n;
} 这段应该是覆盖了抽象方法的吧,为上面不能编译?
----------------解决方案--------------------------------------------------------
因为你在接口中定义的是抽象接口,而在实现它的时候你用的是Void的接收,从而导致编译不通过!
----------------解决方案--------------------------------------------------------
回复 2楼 筱晓绾
那要怎么解决?
----------------解决方案--------------------------------------------------------
在你接口的方法中加个参数啦!  你们发现你接口中的方法没有实现吗?
程序代码:
//声明给员工加薪的方法
   public abstract void addSalary(int n);


----------------解决方案--------------------------------------------------------
听大家说,接口中的方法就是抽象方法,没必要再定义为抽象方法,所以建议lz将接口中的abstract 去掉试试!
----------------解决方案--------------------------------------------------------
将接口中的abstract去掉试了的
  但是还是一样的错误
不过去掉后应该就不是抽象的方法了
  但是还是一样的提示说 并且未覆盖 IEmployee 中的抽象方法
不晓得怎么回事
----------------解决方案--------------------------------------------------------
回复 4楼 jackieli2074
谢谢了,在接口中的抽象方法中加了参数

这样就可以了。


----------------解决方案--------------------------------------------------------
回复 5楼 筱晓绾
5楼说的对
接口中的方法就是抽象方法
难怪我吧abstract去掉后还是一样的说未覆盖抽象方法呢。
谢谢了
问题已经得到解决

----------------解决方案--------------------------------------------------------
  相关解决方案