接口

本文详细介绍了Java接口的基础语法,包括接口的定义、多继承、实现方式、默认方法、静态方法、私有方法等,并探讨了接口在实际开发中的作用,强调了面向接口编程的重要性。通过代码演示,展示了如何在类中实现接口,以及接口的多态特性在降低程序耦合度中的应用。
摘要由CSDN通过智能技术生成

接口(interface)

接口的基础语法:

接口介绍:

  1. 接口也是一种引用数据类型 。编译之后也是一个class字节码文件。

  2. 接口是完全抽象的。(抽象类是半抽象) 或者也可以说接口是特殊的抽象类。

  3. 接口怎么定义的,语法是什么?

    [修饰符列表] interface 接口名{}

  4. 接口支持多继承,一个接口可以继承多个接口。

  5. 一般情况下接口只包含两部分内容。一部分是:常量,一部分是:抽象方法

  6. 一般情况下接口中的所有元素都是public修饰的。(都是公开的。)

  7. 接口中的抽象方法定义时:public abstract修饰符可以省略。

  8. 接口中定义常量时:public static final 可以省略。

  9. 一般情况下接口中的方法都是抽象方法,所有接口中的方法不能有方法体。

代码演示:
public class Test01{
   
    public static void main(String[]args){
   
        //访问接口的常量
        System.out.println(MyMath.PI);
        
        //错误: 无法为最终变量PI分配值
        //MyMath.PI=3.1415928;
        
    }
}

//我的数学接口
interface MyMath{
   
    //常量
    // public static final double PI=3.1415926;
    //接口中public static final 可以省略 如:
    double PI=3.1415926;
    //再如:
    int k=100; //接口中随便写一个变量就是常量:值不能发生改变的变量。
//抽象方法
//接口中既然都是抽象方法,那么public abstract在编写时可以省略
//public abstract int sum(int a,int b);
    int sum(int a,int b);
 
// 接口抽象方法不能带有主体
//    void dosome(){}  错误
    
//相减的抽象方法
    int sub(int a,int b);
}
接口多继承:
  1. 类与类之间是单继承。之间父类只有一个。
  2. 类与接口之间是多实现,一个类可以实现多个接口。
  3. 接口与接口之间是多继承
  4. 注意:
    1. 多个父接口中的抽象方法如果重复,没有关系
    2. 多个父接口中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且要带着default关键字
//定义接口
interface A{
   
    public abstract void methodA();
    public abstract void methodCommon(); 
      public default void methodDefault(){
   
        System.out.println("接口A默认方法");
    }
}

//定义接口
interface B{
   
 public abstract void methodB();
 public abstract void methodCommon();  
      public default void methodDefault(){
   
        System.out.println("接口B默认方法");
    }
}

//定义接口  接口可继承接口 支持多继承
//这个接口中有4个方法
/*
methodA():来自于接口A
methodB():来自于接口B
methodCommon():同时来自于接口A,B
methodA():来自于自己
*/
interface C extends A,B{
   
    public abstract void method();
  //重写重复的默认方法
     @Override
    default void methodDefault() {
   

    }
}

接口实现(implements):

  1. 类和类之间叫做继承,类和接口之间叫做实现。(仍然可以将实现看做’继承’)

    ​ 继承关键字:extends。

    ​ 实现关键字:implements

  2. 当一个非抽象的类实现接口的话,必须重写接口中所有的抽象方法。重写后方法的修饰符必须为public,若方法名重复,重写一次即可。

  3. 如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类必须是一个抽象类。

  4. 一个类可以同时实现多个接口。java中的接口弥补了单继承带来的缺陷

  5. 当运用多态创建对象,调用其他接口可能会出现的问题:

    1. 如下(类实现多接口演示中),接口K和M虽然没有继承关系,但编写代码的时候,可以互转。编译器没意见,但是运行时可能出现ClassCastException异常。

    2. 之前有一个结论:

      无论向上转型还是向下转型,两种类型之间必须要有继承关系,没有继承关系,编译器会报错。(但这句话不适用在接口方面)。但实际上和之前还是一样,需要:if+instanceof运算符进行判断

代码演示:
public class Test02{
   
public static void main(String[]args){
   
    //使用多态
    MyMath m=new MyMathImpl();
    System.out.println( m.sum(10,9));
    System.out.println( m.sub(10,9));
    
}
}
//数学接口
interface MyMath{
   
    double PI=3.1415926;
    //求和方法
    int sum
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值