☰ 总览更新 10-12 22:33

12 · 接口

我的原话

接口 = 合同:只写「必须会什么」,不写怎么做

interface USB { void connect(); }          // 没有 { }
class Mouse implements USB { public void connect() { … } }
class Phone implements USB, Charger { … }  // 可签多份

参数写接口 = 门口规定「只收签了合同的」

public class T22 {
    static void plugIn(USB u) { u.connect(); }   // 在 T22 里;main 是 static 且直接调它 → 它也 static(08)
    public static void main(String[] args) {
        plugIn(new Mouse());   // 这一次 u = 鼠标
        plugIn(new Phone());   // 这一次 u = 手机
    }
}

plugIn("hello") → 编译错:String 没签 USB

方法调用怎么走(真跑过 T23.java)

每次调用 = 跳进去 → 做完 → 跳回来 → 接着下一行;每次是全新的一次,不累加

main 第1行 → 进入 plugIn → 鼠标连上了 → 离开 → main 第2行 → …

demo1 里的接口

@Mapper public interface UserMapper { User findByUsername(String username); int insertUser(User user); } 只写了合同,干活的对象由 MyBatis 运行时自动造。(demo1 的 UserService 是普通类;公司项目常见 UserService 接口 + UserServiceImpl)

题

题 我答 结果
Bird implements Flyable 但没写 fly 不行,没定义方法 ✅
鼠标、鼠标、手机 三次 plugIn 打印几行 六行? ❌ 3 行:每次跳进去做完就结束
手机、鼠标 两次 两行,手机、鼠标 ✅