
哈喽大家好欢迎继续收听Java入门播客上一期我们学完了面向对象三大特性掌握了封装、继承和多态。今天我们来学习接口它在项目开发里常用来定义标准和规范同时还能弥补Java类单继承的短板也是面试高频考点咱们一起来深入学习。 首先我们先理解接口的核心概念。简单来说接口就是一套统一的标准与约定不管是使用接口的一方还是实现接口的一方都必须遵守这套规则。 定义接口要使用关键字 interface 语法格式就是 interface 接口名 {} 。接口编译后同样会生成独立的class字节码文件但它和普通类有本质区别这里梳理几条核心规则第一接口不能实例化创建对象仅能声明接口类型的引用第二接口里定义的属性默认自带 public static final 修饰也就是说接口属性全都是公开静态常量一旦赋值就无法修改第三接口中的普通方法默认被 public abstract 修饰全部都是公开抽象方法只有方法声明没有具体实现第四接口没有构造方法。大家一定要牢记接口并不是类。 接下来讲实现类也就是如何落地使用接口。类想要遵循接口制定的规范需要使用 implements 关键字来实现接口基础格式为 class 实现类名 implements 接口名 {} 。 这里有两个关键注意点如果实现类不打算定义为抽象类那就必须重写接口中所有的抽象方法并且在重写方法时访问权限只能使用 public 不能缩小访问范围。 接口搭配多态是开发中的经典用法写法为 接口名 引用名 new 实现类名() 也就是接口类型的引用指向实现类对象这也是接口场景下强制推荐的多态写法。我们也给大家附上了完整示例代码大家课后可以动手运行直观感受调用效果。 然后我们来看接口的继承与实现规则这也是接口最具特色的部分。首先接口支持多继承一个接口可以同时继承多个父接口语法是 interface 子接口 extends 父接口1,父接口2 这一点直接打破了Java类单继承的限制。 其次类可以多实现接口一个普通类能同时实现多个接口写法为 class 类名 implements 接口1,接口2 。和单接口实现规则一致非抽象类必须重写所有接口里的全部抽象方法且方法权限统一为public。 还有一种高频组合写法先继承父类再实现多个接口语法是 class 子类 extends 父类 implements 接口1,接口2 。这里有硬性顺序要求必须先写继承、再写实现也就是Java经典的“单继承、多实现”模式。依靠这种写法我们既能复用父类的核心功能又能通过接口灵活扩展额外能力。 了解完基础用法我们补充接口引用的类型转换相关知识。当对接口类型的引用做强制转换时编译阶段都会顺利通过但运行阶段会校验引用实际指向的对象类型如果目标类型和实际对象不匹配就会抛出 类型转换异常 这和之前学习的父子类引用转换规则是完全一致的。 聊完语法规则我们总结一下接口在实际开发中的两大核心作用。第一扩充子类的能力。因为Java的类只能单继承当父类提供的功能无法满足子类多样化的需求时就可以借助接口来拓展能力边界。行业内通常会把核心业务逻辑放在父类各类扩展功能、行为规范统一定义在接口中。 第二降低程序中的耦合度。接口只定义行为标准把接口使用者和接口实现者完全分离开。开发时大家都面向接口编程不用关心底层具体实现逻辑让项目各个模块相互独立后续维护、迭代和功能替换都会变得更加轻松。 接下来我们再了解一个实战概念接口回调。简单理解就是我们可以先定义好接口、完成接口的调用逻辑之后再根据业务需求编写对应的实现类。在这类场景中开发人员的核心工作就是严格按照接口定义的规范补全具体的实现代码这也是框架开发中非常常见的设计思想。 最后我们来看一道面试必考题接口和抽象类的区别我们分维度为大家梳理清楚。第一关键字不同接口使用 interface 定义抽象类依靠 abstract class 定义。第二属性区别接口中的属性默认是 public static final 常量抽象类对属性没有限制可以定义实例变量、静态变量也能使用final修饰。第三方法区别接口中默认都是 public abstract 抽象方法抽象类既可以包含抽象方法也可以定义普通的实体方法。第四构造方法接口没有构造方法抽象类拥有构造方法主要用于子类初始化。第五继承关系接口支持多继承Java中的抽象类和普通类一样仅支持单继承。 语气放缓整体总结收尾以上就是接口章节的全部知识点了。从基础概念、语法规则到多继承、多实现、类型转换、实际作用再到和抽象类的对比辨析内容覆盖了基础语法、实战应用和面试考点。 接口是解耦代码、拓展功能的重要工具也是后续学习框架的重要基础建议大家多写案例练习吃透“单继承、多实现”的核心逻辑。 本期播客就到这里我们下期继续学习Java相关知识再见