Java基础 - 接口

一、概念

1.1接口是一种引用数据类型,是一种特殊的抽象类,但接口只有常量和方法的定义,而没有变量和方法的实现。
1.2与继承类似原理类似,但可以实现多重继承的效果。

二、定义接口

2.1关键字:interface(与class同级)。
2.2语法

public interface 接口名{
       //内容
}

2.3接口中可以包含的内容
(1)常量

public static final 数据类型 常量名 = 数据值;

ps:一旦使用final来修饰,说明值不能改变;并且接口中的常量必须进行赋值,并且命名为全大写和_
(2)方法
1)抽象方法

public abstract 返回值类型 方法名称(参数列表)

ps:接口中的抽象方法必须是public abstract这俩固定的关键字(这俩关键字可以选择性的省略)
2)默认方法: (Java8后才有的)

public default 返回值类型 方法名(参数列表){
    //方法体
 }

ps:接口中的默认方法可以解决接口升级的问题。
3)静态方法: (Java8后才有的)

public static 返回值类型 方法名(参数列表){
    //方法体
 }

范例

package interface_demo;

public interface MyInterFacePerson {
    //常量
    static final int PER_AGE = 21;
    //抽象方法
    public abstract void methodAbstract();
    //默认方法
    public default void methodDefault_01(){
        System.out.println("这是接口的默认方法-01");
    }
    public default void methodDefault_02(){
        System.out.println("这是接口的默认方法-02");
    }
    //静态方法
    public static void methodStatic(){
        System.out.println("这是接口的静态方法");
    }
}

三、使用接口

3.1说明
(1). 接口不能直接使用,必须要一个"实现类"来"实现"(调用)该接口;
“实现类”语法:
关键字:implement,其用法extends类似 (表示继承)

   public class 实现类名称 implement 接口名称{
   //重写的方法(抽象方法 或 默认方法)
   } 

(2). 接口的实现类,必须覆盖重写(实现)接口中所有的抽象方法,默认方法可以重写也可以直接使用,静态方法只能直接使用;
(3).创建实现类的对象,从而进行使用。
ps:如果实现类没有重写覆盖接口中的所有抽象方法,那么实现类自己就必须是抽象类
3.2范例
1)实现类(重写方法):

package interface_demo;

public class MyInterFacePersonLmpt implements MyInterFacePerson {
    //重写抽象方法
    public void methodAbstract(){
        System.out.println("这是重写的抽象方法");
    }
    
    //重写默认方法-02
    public void methodDefault_02(){
        System.out.println("这是重写的默认方法-02");
    }
}

2)创建实现类的对象,使用接口

package interface_demo;

public class InterFaceDemo {
    public static void main(String[] args) {
        MyInterFacePersonLmpt implement = new MyInterFacePersonLmpt();
        //常量
        int age = MyInterFacePerson.PER_AGE;

        //抽象方法
        implement.methodAbstract();

        //默认方法
        //未重写直接调用,因为实现类可以直接继承接口的默认方法
        implement.methodDefault_01();
        //重写的默认方法
        implement.methodDefault_02();

        //静态方法
        MyInterFacePerson.methodStatic();
    }
}

结果:

这是重写的抽象方法
这是接口的默认方法-01
这是重写的默认方法-02
这是接口的静态方法

3.3特殊的使用
(1)接口的继承:一个接口可以继承其他接口,继承的基本概念与类一样,但与类不同的是,接口可以有多个父接口。范例:

public interface Grandpa1{
    void method1();
}
public interface Grandpa2{
    void method2();
}
public interface InterFaceFather extends Grandpa1,Grandpa2{
}
ps:InterFaceFatherGrandpa1Grandpa2两个父类,接口的继承同样使用extends关键字,多个父接口之间以逗号分隔。

(2)类的继承与接口:类的继承与接口类的继承与接口可以共存
换句话说,类可以在继承基类的情况下,同时实现一个或多个接口。范例:

public class Child extends ClassFather implements InterFaceFather(){
    //主体代码
}

ps:关键字extends要放在implements之前。(用于演示,ClassFather为定义)
instanceof:与类一样,接口也可以使用instanceof关键字,用来判断一个对象是否实现了某接口。范例:

Point p = new Point(2,3);
if (p instanceof MyComparable){
     System.out.println("comparable");
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值