下列关于interface的说法着正确的是 ( interface中可以有private方法 interface中可以有final方法 interface中可以有方法实现 interface可以继承其他interface
时间: 2024-05-23 21:13:50 浏览: 18
接口(interface)是Java中的一个重要概念,以下说法是正确的:
1. 接口中可以有方法实现(Java 8之后)。这种方法被称为默认方法(default method),可以为接口提供默认的方法实现。默认方法可以被实现该接口的类继承或重写。
2. 接口可以继承其他接口,这样子接口就继承父接口的方法和常量,但不会继承父接口的默认方法的实现。
3. 接口中不可以有private方法,因为接口中的方法默认为 public abstract。但Java 9之后,接口中可以有private的静态方法和私有的默认方法。
4. 接口中可以有final方法,这样的方法不能被子类重写。不过,final方法在接口中不太常见,因为接口的目的是定义一组可被实现的方法,而final方法不符合这个目的。
相关问题
不能用来修饰interface的有
不能用来修饰interface的有:
1. final:interface中的所有方法默认为public和abstract,不能有实现,因此不需要使用final关键字来防止被重写。
2. static:接口中不能有静态方法。
3. private、protected:接口中的方法默认为public,不能使用private或protected来修饰方法。
4. native:接口中的方法不能是本地方法,因为本地方法是用其他编程语言实现的。
在service实现类中实现mapper中的接口 @Override方法未从其超类重写方法
这是因为您在实现 mapper 接口的方法时,没有正确地覆盖(重写)其超类中定义的方法。
请确保您的 mapper 接口和实现类之间存在正确的继承关系,并且您的实现类中的方法签名与 mapper 接口中定义的方法签名完全一致。此外,建议使用 @Override 注解来确保您正确地覆盖了超类中的方法。
例如,以下是一个正确实现 mapper 接口的示例:
```
public interface UserMapper {
User selectUserById(int id);
}
public class UserMapperImpl implements UserMapper {
private final SqlSession sqlSession;
public UserMapperImpl(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public User selectUserById(int id) {
return sqlSession.selectOne("selectUserById", id);
}
}
```
在上述示例中,UserMapperImpl 类实现了 UserMapper 接口,并正确地覆盖了 selectUserById() 方法。注意,这里使用了 @Override 注解来确保正确地覆盖了超类中的方法。