什么是类什么是接口

类(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 → 枚举值
posted @ 2026-08-17 14:42  xuelin  阅读(8)  评论(0)    收藏  举报