Java:接口

一、接口

生活中接口的例子有很多:
电源插座插孔可以插各种符合要求的电器,充电器,电视等等
电脑的USB接口可以插U盘,鼠标等等设备
从上面可以看出
接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型

二、语法规则

接口的定义格式与定义类的格式基本相同,将class关键字换成interface 关键字,就定义了一个接口。

public interface Test1 {
    public abstract void method1(); 
    public void method2();
    abstract void method3();
    void method4();
}

上面4个方法都是可以的, public abstract是固定搭配,可以不写,推荐用method4的写法,代码更加简洁

三、接口的使用

接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法

public interface Test1 {
    public abstract void method1();
    public void method2();
    abstract void method3();
    void method4();
}

class Test2 implements Test1{

    @Override
    public void method1() {

    }

    @Override
    public void method2() {

    }

    @Override
    public void method3() {

    }

    @Override
    public void method4() {

    }
}

注意:子类和父类之间是extends 继承关系,类与接口之间是implements 实现关系

四、接口的特性

  1. 接口是一种引用类型,但是不能直接new接口的对象
public class Test {
    public static void main(String[] args) {
        new Test1();  //报错   java: Test1是抽象的; 无法实例化
    }
}

  1. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)
public interface Test1 {
    public abstract void method1();
    public void method2();
    abstract void method3();
    void method4();
    private void  method5(); //报错

}
  1. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现
public interface Test1 {
    public abstract void method1();
    public void method2();
    abstract void method3();
    void method4(){  //报错
        System.out.println("666");
    }
}
  1. 重写接口的方法只能使用public
  2. 接口的变量会被隐式的指定为public static final
  3. 接口中不能含有静态代码块和构造方法

五、实现多个接口

我们先写3个接口分别对应“会飞的”,“会跑的”,“会游的”

interface IFlying {
   void fly();
} 
interface IRunning {
   void run();
}  
interface ISwimming {
   void swim();
}

我们再创建一个具体的动物(父类动物省略)

class Frog extends Animal implements IRunning, ISwimming {
    public Frog(String name) {
        super(name);
    } 
    @Override
    public void run() {
        System.out.println(this.name + "正在往前跳");
    } 
    @Override
    public void swim() {
        System.out.println(this.name + "正在蹬腿游泳");
    }
}

不能多继承但可以实现多个接口

六、接口的继承

使用extends关键字

interface IRunning {
    void run();
} 
interface ISwimming {
    void swim();
} // 两栖的动物, 既能跑, 也能游
interface IAmphibious extends IRunning, ISwimming {
}
class Frog implements IAmphibious {
//...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值