课程名称:Java工程师2022版
课程章节:Java多态(下)
课程内容:
JAVA接口的概念、定义、接口成员(抽象方法和常量)、(默认方法和静态方法)
接口中,重名方法和常量的处理问题
课程收获:
接口定义:
java中通过接口实现行为能力的关联
public interface IPhoto //定义接口方法
public class Camera implements IPhoto用类实现接口方法,必须重写该接口方法
“规定一个类必须做什么,但是不管这个类怎么做”
接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法
接口不是类,是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为
接口不能实例化对象,可以声明接口变量,并指向实现类,只能调用类中的定义的实现接口的函数,不能调用接口中没有定义的函数。
一个Java文件中可以存在多个类,多个接口,但是只能存在一个public修饰的类或接口,且此时文件名需要与public修饰的类或接口同名。
接口成员(方法和属性):
通常是public或者是默认的访问权限
接口的方法其实是 抽象方法,但是abstract可以省略,抽象方法可以不写访问修饰符,但默认是public
当类实现接口时,需要去实现接口中的所有抽象方法,否则需要将该类设置为抽象类
接口中可以包含常量,默认public static final(调用:接口.常量),接口中常量必须有默认值
实现类中可以定义和接口中重名的常量时,当程序中使用接口引用指向实现类的时候,调用的时接口中的常量
默认方法:
(public) default,可以带方法体(jdk1.8新增),可以在实现类中重写,并可以在重写方法中通过接口的引用调用
也可以在实现类中重载,但无法通过接口引用访问
应用场景:如果希望实现类能更多的直接应用接口中的方法
静态方法:
(public)static,可以带方法体(jdk1.8新增),不可以重写
在实现类中需要通过接口名进行访问,但无法重写重载,可以存在相同格式的静态方法,但二者独立存在
应用场景:希望更多的接口扩展方法是支持在无实例对象产生的情况下调用
跨包:
接口可以在不同的包中创建,可以根据业务设计需要单独创建接口包。
跨包调用时,需设置可访问接口为public访问权限,此时只需参照之前跨包调用的方式,即import包名.*;或者import包名.接口名;即可。
继承关系中的接口:
当父类未实现接口中全部方法时,则父类需要设置为抽象类,子类若不想继续抽象,则需要实现相关未实现方法,否则将继续为抽象类。
当父类已实现了接口中所有方法,子类中若无特殊需要,无需重新实现接口中方法。