10.7 实现

上一节建立了接口的概念,这一节将介绍怎么实现接口。 我们创建一个类来“实现”上一节的接口,新建一个类,名字是Plane,然后在interface那一项,点击add(添加),弹出框里输入要实现的接口,没打完接口的全名,搜索的结果框就出现了IFlyable了
双击后这个接口就出现在interface的列表里,点击ok关闭接口搜索框(双击接口添加后不会关闭):
点击完成后Plane类是这样的:
public class Plane implements IFlyable{
 
    @Override
    public void launch(){
        // TODO 自动生成的方法存根
    }
 
    @Override
    public void fly(){
        // TODO 自动生成的方法存根
    }
 
    @Override
    public void land(){
        // TODO 自动生成的方法存根
    }
}
所谓的实现接口,就是把接口里所有的方法都实现,使得它有真实的功能。那么继承一个抽象类,和实现一个接口,有什么异同吗?

类实现接口
类继承抽象类
属性
类会继承接口的静态属性(接口没有非静态属性)
会继承类的protected和public的属性
方法
必须实现接口里面所有方法,因为接口内的方法都是抽象的。
必须实现抽象(abstract)方法,否则本类也要定义成抽象(abstract)
关系
类拥有接口的功能
类是父类的一种,肯定也有父类的功能

一个类可以实现多个接口
一个类只能继承一个类
java不支持多继承,一个类一次只能继承一个类(C++支持多继承),但可以实现多个接口。
那么怎么实现多个接口呢? 如果是用eclipse界面创建class,指定接口的时候,可以指定多个,假如还有一个接口,IGas,可加油的:
public interface IGas{
    void addGas();
    boolean isEmpty();
}
addGas表示加油,isEmpty判断是否没油,现在plane要实现这两个接口:IFlyable、IGas。 创建Plane的时候,指定第一个接口IFlyable
 创建Plane的时候,指定第二个接口IGas
 最后生成的代码是,从自动生成的方法存根可以看到两个接口的方法都在这里了:
public class Plane implements IFlyable,IGas{
 
    @Override
    public void addGas(){
        // TODO 自动生成的方法存根
    }
 
    @Override
    public boolean isEmpty(){
        // TODO 自动生成的方法存根
        return false;
    }
 
    @Override
    public void launch(){
        // TODO 自动生成的方法存根
    }
 
    @Override
    public void fly(){
        // TODO 自动生成的方法存根
    }
 
    @Override
    public void land(){
        // TODO 自动生成的方法存根
    }
}