接口是抽象类的更进一步. 抽象类中还可以包含非抽象方法, 和字段. 而接口中包含的方法都是抽象方法, 字段只能包含 静态常量
众所周知,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
4230

被折叠的 条评论
为什么被折叠?



