接口

接口是抽象类的更进一步. 抽象类中还可以包含非抽象方法, 和字段. 而接口中包含的方法都是抽象方法, 字段只能包含 静态常量

众所周知,java用extends只能实现单继承的,而接口时是为了实现多继承的。

首先我们实现一个抽象类

public abstract class Car {

    private String carName;
    private String carNum;

    public String getCarName() {
        return carName;
    }

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public String getCarNum() {
        return carNum;
    }

    public void setCarNum(String carNum) {
        this.carNum = carNum;
    }

    public Car() {

    }

    public Car(String carName,String carNum) {
        setCarName(carName);
        setCarNum(carNum);
    }
    //抽象类
    public abstract void addEnergy();
}

抽象类的子类

public class EleCar extends Car{
    public  EleCar(String carName,String carNum) {
        super(carName,carNum);
    }
    @Override
    public void addEnergy() {
        System.out.println(getCarName() + "加电");
    }
}

public class GasCar extends Car {
    public  GasCar(String carName,String carNum) {
        super(carName,carNum);
    }
    @Override
    public void addEnergy() {
        System.out.println(getCarName() + "加柴油");
    }
}

public class OilCar extends Car{
    public  OilCar(String carName,String carNum) {
        super(carName,carNum);
    }
    @Override
    public void addEnergy() {
        System.out.println(getCarName() + "加汽油");
    }
}

public class WaterCar extends Car {
    public  WaterCar(String carName,String carNum) {
        super(carName,carNum);
    }
    @Override
    public void addEnergy() {
        System.out.println(getCarName() + "加水");
    }
}

然后实现抽象类子类的接口

public interface EleInf {
    public void addEle();
}

public interface GasInf {
    public void addGas();
}
public  interface OilInf {
    public void addOil();
}

public interface WaterInf {
    public void addWater();
    //接口中定义的方法只能是抽象方法,所以可以省略abstract关键字
}

实现完接口的定义后
可以实现多继承了

import com.sun.org.apache.bcel.internal.generic.NEW;

public class WaterOilCar extends NewCar implements WaterInf,OilInf {

    public WaterOilCar() {

    }

    public WaterOilCar(String carName,String carNum) {
        super(carName,carNum);
    }

    public void addWater() {
        System.out.println(getCarName() + "加水");
    }

    public void addOil() {
        System.out.println(getCarName() + "加汽油");
    }

}

总结
1、接口需要interface关键字修饰
2、里面的数据成员必须是一个常量.
public static final int a = 10;
3、里面的成员方法是默认为:public abstract
4、在接口当中 不能够定义一个已经实现的方法。
5、JDK1.8新特性:接口当中可以有实现的方法 但是这个方法一定是被default修饰的
6、类和接口的关系:实现–》implements 可以实现多个接口
7、解决了java当中 单继承的问题 可以变为多继承
8、实现了改接口 一定要重写该接口当中的方法
9、接口仍然是不可以被实例化
10、实现该接口的重写方法的时候,一定不能够省略public

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值