JAVA自学Day10: 接口 多态

接口
接口就是一种公共暴露的规则
好处:具有通用性
程序当中定义接口的格式:
public interface 接口名称{
接口内容
}

虽然使用了interface关键字,但是编译之后产生的字节码文件仍然是.class文件。
JDK9.0接口五个部分
1抽象方法
2默认方法
3静态方法
4私有方法
5常量

抽象方法的定义格式:
public abstract返回值类型 方法名称(参数列表);
备注:public abstract两个关键字在接口中可以省略,就算不写,也照样是public abstract
对于方法的三要素没有要求。

1.不能直接new接口
2.必须有一个实现类,去实现接口
public class 实现类名称 implements 接口名称{
}
3实现类当中必须覆盖重写所有的抽象方法
4.创建实现类对象进行使用。

(JAVA 8) 默认方法
格式
public default 返回值类型 方法名称(参数列表){
方法体}
public 可以省略 default不能省略。
接口中的默认方法不强制覆盖重写。
实现类也是可以对默认方法进行覆盖重写。

静态方法
如果一个方法和对象无关,那么就可以定义成为静态方法。
public static 返回值类型(参数列表){
方法体
};
备注:public可以省略。static不可以省略。
接口名称.静态方法名(参数)
接口当中的静态方法使用,不能通过实现类调用

私有方法
定义: public interface 接口名称{
private 返回值类型 方法名称(参数列表)
方法体
}

注意
1.java9才可以使用
2静态不能直接调用非静态
3任何一个关键字都不能省略

常量
定义:public static final 数据类型 常量名称 = 数据值
注意:
三个关键字都可以省略。
final关键字代表最终 不可改变
接口当中的常量一定要赋值。
接口当中的常量,所有字母一律大写,中间使用下划线分隔。
使用接口中常量的格式
接口名称 . 常量名 ;

一个类在继承父类的同时,实现多个接口的格式:
public class 类名称 extends 付类名称 implements 接口A,接口B{
}
1.这个类必须覆盖重写所有的抽象方法。
2.如果父类/或多个接口之间存在重复的抽象方法,那么只要覆盖重写一次即可。
3如果这个类没有做到覆盖重写所有抽象方法,那么这个类自己也必须是一个抽象类
4对于多个接口存在冲突的默认方法,实现类必须进行覆盖重写。
5父类的方法优先于接口中的默认方法。

子接口的实现类,必须覆盖重写来自于所有接口的所有抽象方法
如果多个付接口当中存在重复的抽象方法,无所谓。
如果多个付接口中存在冲突的默认方法,那么子接口必须覆盖重写默认方法,而且带着deflaut关键字。

多态
一个对象拥有多种形态,叫对象的多态
多态性在代码当中的体现就是:左父又子(左接口右实现)
父类 对象名= new 子类();
使用多态的时候【重要】特点是:编译看左边,运行看右边。
左边决定能不能调用,右边决定运行的是谁。

多态中成员方法的访问特点
看new的是谁优先用谁,如果没有,向上找父类。

你可能感兴趣的:(JAVA自学Day10: 接口 多态)