Java面向对象编程之接口

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();
    }
}

猜你喜欢

转载自blog.csdn.net/ruan_luqingnian/article/details/113337119