日期:2014-05-17  浏览次数:20704 次

接口问题
接口:
package com.mq.jcyk.clas.service;

import com.mq.jcyk.clas.action.ClasDto;

public interface ClasService
{
public void createStudent(ClasDto dto);
}
实现:

package com.mq.jcyk.clas.service.impl;

import java.util.Map;

import com.mq.jcyk.clas.dao.ClasDao;
import com.mq.jcyk.clas.service.ClasService;
import com.mq.jcyk.pojo.Student;
import com.mq.jcyk.util.BruceTool;

public class ClasServiceImpl implements ClasService
{
private ClasDao clasDao;

Map<String, Object> queryParams = null;

public ClasDao getClasDao() {
return clasDao;
}

public void setClasDao(ClasDao clasDao) {
this.clasDao = clasDao;
}

@Override
public void createStudent(ClasDto dto) {
Student student = new Student();
student.setSid(BruceTool.getPrimaryKey());
student.setStudentName(dto.getStudent().getStudentName());
student.setAge(dto.getStudent().getStudentAge());
student.setGender(dto.getStudent().getStudentGender());
student.setAddress(dto.getStudent().getStudentAddress());


clasDao.createStudent(student);

}

}
报错:The type ClasServiceImpl must implement the inherited abstract method ClasService.createStudent(ClasDto)
这是为什么呢,接口定义的方法不是已经实现了吗?

------解决方案--------------------
你把Override去掉试试。
------解决方案--------------------
你如何调用的看看
------解决方案--------------------
从你代码来看不可能出现这个问题
有两种原因
第一,你改成这样子,但是没有save文件,编译器还是报错
第二,你贴出来的代码跟源码不一致,源码可能多个空格或者是什么拼写错误
------解决方案--------------------
@Override是JDK5就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override
而JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override

修改你的eclipse指定的编译器版本
在选项里的java compiler中指定版本至少在5.0以上