接口、多态个人小结

    科技2022-08-17  130

                                                           接口

    1、接口是一种公共的规范标准,只要符合标准,就可以大家通用。

    2、定义接口的格式:public interface 接口名{//接口内容}

    3、接口中可以包含的方法:

            Java7:常量、抽象方法

            Java8:默认方法、静态方法

            Java9:私有方法。

    4、接口中的抽象方法,修饰符必须是public abstract,这两个修饰符可以选择性的省略,但是不能写其他的修饰符。

    5、接口使用的方法:

            接口不能直接使用,必须有一个实现类来实现接口。

            Public class 实现类名称 implements 接口名称{//。。。}

            接口的实现类必须重写接口中的所有抽象方法。

    6、Java8开始接口可以定义默认方法:public default 返回值类型 方法名(参数列表){//方法体}(public可以省略,但是default不能省略。)。默认方法用于解决接口升级的问题。默认方法会继承给接口实现类,也可以被实现类重写。

    7、Java8开始接口中可以定义静态方法:public static 返回值类型 方法名称(参数列表){//方法体}(public可以省略,但是static不能省略。)。接口名.方法名()使用,不能通过实现类调用。

    8、Java9开始接口中可以定义私有方法:

            普通私有方法:private 返回值类型 方法名称(参数列表){//方法体},用于解决多个默认方法之间重复代码的问题。

            静态私有方法:private static 返回值类型 方法名称(参数列表){//方法体},用于解决多个静态方法重复代码的问题。

            私有方法只能被自己调用,不能被实现类或其他类调用。

    9、接口中也可以定义成员变量,但是必须用public static final三个关键字修饰,其实就是一个常量。格式:public static final 数据类型 常量名(建议完全大写,单词之间用下划线分隔) = 数据值(必须赋值);这三个修饰关键字可以省略不写,但默认存在。使用时直接通过接口名称.常量名称来使用。

    10、接口中不能有静态代码块,也不能有构造函数。

    11、一个类可以同时实现多个接口,如果多个接口中有重复的抽象方法,实现类只需重写一次即可。如果多个接口中有重复的默认方法,实现类必须对冲突的默认方法进行重写。

    12、一个类的父类方法和实现的接口类的默认方法重名冲突,则默认优先继承父类的方法(即继承优先于实现)。

    13、接口与接口之间是多继承的,可以继承多个父类接口,多个父接口之间可以有重复的抽象方法,但是如果多个父类接口中有默认方法重复,子接口必须对默认默认方法进行重写,并且带着default关键字修饰。

                                                            多态

    1、一个子类(实现类)继承(实现)了父类(接口),所以子类也可以看成一个父类,可以用父类引用指向(接受)一个子类对象。此时通过父类引用来调用方法时,优先使用new的对象中的方法(即new的是谁,优先用谁,没有则向上查找);通过父类引用来调用成员变量时,优先使用变量类型的成员变量(即初始化对象时,等号左边是谁,优先用谁的成员变量),间接通过成员方法访问成员变量时,看该方法属于谁,就优先用谁,没有则向上找。

    2、多态的好处:对象的上下转型,在方法的参数列表中使用父类接收,传递的实参是子类,方法体中使用父类引用操作子类方法及成员变量(向上转型一定是安全的,向下转型不一定安全)。

    3、为了防止向下转型时出现错误,可以通过instanceof关键字来进行类型判断。

    格式:对象 instanceof 类名称,判断前面的对象能不能当作后面类型的实例,返回值是一个Boolean值。

    Processed: 0.015, SQL: 9