定义A接口:
public interface IService<T> {
default boolean save(T entity) {
return SqlHelper.retBool(this.getBaseMapper().insert(entity));
}
}
定义B接口继承A接口:
public interface IBaseService<T> extends IService<T> {
ResponseValue curd(HttpServletRequest req, T entity, int page, int size) throws Exception;
}
定义实现类C实现A接口:
public class ServiceImpl<M extends BaseMapper<T>, T> implements IService<T> {}
定义实现类D继承C实现类,实现B接口:
@Service
@Slf4j
public class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> implements IBaseService<T> {
@Override
public ResponseValue curd(HttpServletRequest req, T model, int page, int size) throws Exception {}
}
上述代码是一个典型的Java接口和类的继承实现逻辑。下面我将对相关概念进行解释:
接口(Interface):接口是一种抽象的规范,定义了一组方法的签名(方法名、参数列表和返回类型),而不包含具体的实现代码。接口中的方法默认是公共的、抽象的,不需要提供具体的实现。接口可以包含常量和默认方法的定义。在Java中,接口使用interface关键字声明。
类(Class):类是对对象的封装,描述了对象的属性和行为。它可以实例化为具体的对象,并提供对应的方法来操作对象。类可以继承其他类或实现接口。在Java中,类使用class关键字声明。
继承(Inheritance):继承是一种面向对象的特性,它允许一个类继承另一个类的属性和方法。被继承的类称为父类或超类(superclass),继承的类称为子类或派生类(subclass)。子类继承了父类的属性和方法,并可以添加新的属性和方法,或者修改父类的方法。通过继承,子类可以复用父类的代码并扩展功能。
接口继承(Interface Inheritance):接口可以通过extends关键字继承其他接口。接口继承的概念类似于类的继承,子接口可以继承父接口的方法签名,并可以添加新的方法签名。一个接口可以继承多个接口,形成接口的继承链。
类实现接口(Implementing Interfaces):类可以通过implements关键字实现一个或多个接口。实现接口意味着类要遵循接口定义的方法签名,并提供具体的方法实现。一个类可以同时实现多个接口,通过逗号分隔。
在给出的代码中,IBaseService是一个接口,继承自IService接口。IBaseService接口定义了一些通用的服务方法,例如增删改查操作。IBaseService没有提供具体的方法实现,它只是定义了方法的签名。
BaseServiceImpl是一个类,它继承自ServiceImpl<M, T>类并实现了IBaseService接口, M可以是任何继承自BaseMapper接口的Mapper接口类型。BaseServiceImpl类提供了对IBaseService接口中定义的方法的具体实现。通过继承ServiceImpl类,BaseServiceImpl类获得了一些通用的服务方法的默认实现。
通过这种继承实现的方式,BaseServiceImpl类可以作为服务类的基类,提供了通用的服务方法的实现,而具体的业务服务类可以继承BaseServiceImpl并根据自身的需求进行扩展和重写。这样可以实现代码的复用和统一的服务接口定义。
总的来说就是:实现类实现了接口就要实现这个接口的所有方法,继承一个父类,父类实现接口的所有方法后,当前实现类,就不用再做实现了。
以下是抽象类和接口的描述:
抽象类
抽象类 是一种不能被实例化的类,它可以包含抽象方法和普通方法。
抽象方法是一种没有实现体的方法,只有方法签名,用 abstract 关键字标识。
子类继承抽象类后,必须实现其中的抽象方法,除非子类也声明为抽象类。
接口
接口 定义了一组方法的集合,但没有实现这些方法。
接口中的方法默认都是抽象方法,不需要使用 abstract 关键字标识。
类可以实现多个接口,从而拥有这些接口定义的方法。
继承
继承 允许一个类(子类)派生出另一个类(父类)的属性和行为。
子类继承父类的属性和方法,可以重写父类的方法来实现特定的行为。
实现
在面向对象编程中,实现 是指一个类遵循了某个接口的规范,实现了该接口中定义的所有方法。
通过实现接口,类表明其将提供接口中定义的所有方法的具体实现。
方法重写
当子类继承自父类或实现了接口后,如果需要改变方法的行为,就可以在子类中重写(override)父类的方法或接口中定义的方法。
重写方法必须具有相同的方法名称、参数列表和返回类型。在子类中可以重新定义方法的实现。
使用 @Override 注解可以帮助编译器检查是否正确重写了父类的方法或实现了接口中定义的方法。
总体来说,抽象类、抽象方法和接口都是用来定义规范和约束的工具。在子类继承抽象类或实现接口时,需要重写其中的抽象方法,以实现具体的行为。