Java面向对象编程之接口
简介:讲解Java中的的接口interface
- 什么是接口
- 是抽象⽅法的集合,接⼝通常以
interface
来声明,⼀个类通过继承接⼝的⽅式,从而来继承接口的抽象⽅法 - 语法
- 是抽象⽅法的集合,接⼝通常以
interface 名称 [extends 其他的接⼝名] {
// 声明变量
// 抽象⽅法
int getMoney();
}
- 接口的特点
- 接口的⽅法都是抽象⽅法,默认都是 public abstract,其他修饰符都会报错
- 接口中可以含有变量,但是接口中的变量会被隐式的指定为
public static final
- 类描述对象的属性和⽅法,⽽接口则包含类要实现的⽅法
- 接口⽆法被实例化,需要被实现才⾏
- ⼀个实现接口的类,必须实现接口内所描述的所有⽅法,否则就必须声明为抽象类
- 接口和类的区别
- 接口没有构造函数
- 接口⾥可以有静态⽅法和⽅法体
- 接口中所有的⽅法必须是抽象⽅法(JDK8之后就不是)
- 接口不是被类继承了,⽽是要被类实现
- 接口⽀持多继承, 类不⽀持多个类继承
- 接口的实现
implements
- 当类实现接口的时候,类要实现接口中所有的⽅法,不然类必须声明为抽象的类,使⽤
implements
关键字实现所有接口
- 语法
class 类名 implements 接⼝名称[, 其他接⼝名称, 其他接⼝名称]{
//要实现的⽅法
}
package domee.chapter6_7;
public interface Pay extends A,B {
//public static final int money = 10; == int money = 10;
int money = 10;//不推荐在接口内定义属性
//public abstract boolean getOderList(); == boolean getOderList();
int getOderList();
}
注意
- ⼀个类只能继承⼀个类,但是能实现多个接⼝
- 接⼝能继承另⼀个接⼝,接⼝的继承使⽤extends关键字,和类继承⼀样
JDK8新特性
- interface中可以有static⽅法,但必须有⽅法实现体,该⽅法只属于该接⼝,接⼝名直接调⽤该⽅法
- 接⼝中新增default关键字修饰的⽅法,default⽅法只能定义在接⼝中,可以在⼦类或⼦接⼝中被重写
default定义的⽅法必须有⽅法体 - ⽗接⼝的default⽅法如果在⼦接⼝或⼦类被重写,那么⼦接⼝实现对象、⼦类对象,调⽤该⽅法,以重写为准
- 本类、接⼝如果没有重写⽗类(即接⼝)的default⽅法,则在调⽤default⽅法时,使⽤⽗类定义的default⽅法逻辑
package domee.chapter6_7;
public interface Ipay extends Pay{
static void staticMethod(){
System.out.println("Ipay接口中的静态方法");
}
default void defaultMethod(){
System.out.println("Ipay接口中的默认方法");
}
}
// static⽅法必须通过接⼝类调⽤
IPay.staticMethod();
//default⽅法必须通过实现类的对象调⽤
new IPay().defaultMethod();
package domee.chapter6_7;
public class MainClass {
public static void main(String[] args) {
Ipay.staticMethod();
}
}