什么是类什么是接口
类(Class)
类就是蓝图/模板,描述了一类事物有什么属性和行为。
// 这就是一个类
public class SysLoginController {
// 属性:它有什么
@Autowired
private SysLoginService loginService;
// 方法:它能做什么
public AjaxResult login(@RequestBody LoginBody loginBody) { ... }
}
你代码里的 SysLoginController、SysLoginService、LoginBody、AjaxResult 都是类。
接口(Interface)
接口就是契约/规范,只定义"要做什么",不定义"怎么做"。
// 接口:只声明方法,不写实现
public interface ISysMenuService {
List<SysMenu> selectMenuTreeByUserId(Long userId); // 只有方法签名,没有方法体
}
// 实现类:真正实现接口里定义的方法
public class SysMenuServiceImpl implements ISysMenuService {
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
// 具体的实现逻辑
return menuMapper.selectMenuTreeByUserId(userId);
}
}
为什么要有接口? 解耦。Controller 只依赖 ISysMenuService 接口,不关心具体是哪个实现类。以后换实现不影响调用方。
还有啥?
| 概念 | 说明 | 你代码中的例子 |
|---|---|---|
| 枚举(Enum) | 固定的一组常量值 | BusinessType.INSERT、BusinessType.DELETE |
| 注解(Annotation) | 给代码加标记/元信息 | @Autowired、@RestController、@PostMapping、@PreAuthorize |
| 抽象类(Abstract Class) | 部分实现、部分抽象的类 | BaseController(提供了 success()、error() 等方法,子类直接用) |
| 泛型(Generic) | 类型参数化,让代码更通用 | List<SysMenu>、Map<String, Object>、AjaxResult.success(data) |
| 内部类/嵌套类 | 类里面定义的类 | LoginUser 里面可能嵌套其他对象 |
一张图串起来
Controller(类)
↓ 依赖
Service 接口(interface) ← 定义"要做什么"
↓ 实现
ServiceImpl(类) ← 定义"怎么做"
↓ 调用
Mapper 接口(interface)
↓ 映射
Mapper XML(SQL)
你选中的代码里:
SysLoginController→ 类ISysMenuService、ISysConfigService→ 接口(以I开头是若依的命名习惯)SysLoginService、SysPermissionService、TokenService→ 类(framework 层的服务类,没走接口模式,因为是框架内部服务)@RestController、@Autowired、@PostMapping→ 注解BusinessType.INSERT→ 枚举值

浙公网安备 33010602011771号