接口写法说明:
注: 本文本主要用来说明,接口在工程中的应用。
你是否遇到过这样的接口语法!!!!
Oil mustang = new Mustang()
Oil 是接口 Mustang是定义的实体类
遇到了就仔细看这个案例!
模拟的场景:
角色:三辆车,一个加油站, 一个司机。
动作:加油。
先写一个接口:
// 油接口
public interface Oil {
void setOilNum(int Num);
boolean useOil();
int queryOilNum();
}
四个实体类(三辆车继承接口油,人是普通的类):
// mustang
package understandinginterface.car;
import understandinginterface.resources.Oil;
public class Mustang implements Oil{
int oilNum = 0;
@Override
public void setOilNum(int num) {
oilNum = num;
System.out.println("加油" + num + "L");
}
@Override
public boolean useOil() {
if(oilNum > 0){
System.out.println("mustang正在路上行驶,sa~");
oilNum -= 1;
return true;
}else {
System.out.println("没有油了,野驴车主请加油");
return false;
}
}
@Override
public int queryOilNum() {
System.out.println("油箱还有 " + oilNum + "L");
return oilNum;
}
public void slogon(){
System.out.println("我野马是最帅的!!!就是要个性!!!!");
}
}
// 尊贵无比 BMW
package understandinginterface.car;
import understandinginterface.resources.Oil;
public class BMW implements Oil {
int oilNum = 0;
@Override
public void setOilNum(int num) {
if(num > 5){
oilNum = 5;
System.out.println("我们宝马油箱小,只能装5L");
} else{
oilNum = num;
}
}
@Override
public boolean useOil() {
if(oilNum > 0){
oilNum -= 2;
System.out.println("闲人闪开, 尊贵宝马来了");
return true;
}
return false;
}
@Override
public int queryOilNum() {
System.out.println("我们宝马油箱小,还费油~~就是任性");
return oilNum;
}
}
// 再好也是农用车 Ford
package understandinginterface.car;
import understandinginterface.resources.Oil;
public class Ford implements Oil{
int oilNum = 0;
@Override
public void setOilNum(int num) {
int limitOil = 90;
System.out.println("福特农用车, 油箱就是大!!我最多可以装" + limitOil + "L");
if(num >= limitOil){
System.out.println(limitOil + "L都不能满足你?少侠你要去非洲吗?");
oilNum = limitOil;
}else{
oilNum = num;
}
}
@Override
public boolean useOil() {
if(oilNum > 0){
oilNum -= 3;
System.out.println("大Ford:轰轰轰~~~");
return true;
}
return false;
}
@Override
public int queryOilNum() {
System.out.println("Ford大油箱目前还剩" + oilNum + "L");
return oilNum;
}
}
// 加油站 重点注意这里!!!!
package understandinginterface.oiladder;
import understandinginterface.resources.Oil;
public class OilAdder {
/**
* 这里的car, 前边用的Oil是接口。这个写法我在很多源码里看到过,当时都不知道是什么意思。
* car.setOilNum(), 这个是调用car类里面的功能。
*/
public void addOil(Oil car,int num1){
car.setOilNum(num1);
}
}
主函数(司机类)
// stalin司机 重点注意这里!!!!(2)
package understandinginterface.People;
import understandinginterface.car.BMW;
import understandinginterface.car.Ford;
import understandinginterface.car.Mustang;
import understandinginterface.oiladder.OilAdder;
import understandinginterface.resources.Oil;
public class Stalin {
public static void main(String[] args) {
OilAdder oilAdder = new OilAdder();
Oil mustang = new Mustang();
Oil ford = new Ford();
Oil bmw = new BMW();
oilAdder.addOil(mustang, 10);
mustang.useOil();
mustang.queryOilNum();
oilAdder.addOil(ford, 100);
oilAdder.addOil(bmw, 10);
ford.useOil();
ford.queryOilNum();
bmw.useOil();
bmw.queryOilNum();
//司机此时很爽,想大喊野马天下第一。
//mustang.slogon();
// 为什么要注释,因为不注释就报错了。
//接口不让你喊。 定义了有用吗?(mustang类里面定义了slogon方法,但是无法调用)
//哈哈哈(狗头)。 现在知道为什么说接口是一种规范了把?
// 采用 接口名 + 具体实例化类名 = new 类名 这种写法,则只能调用接口定义的方法。实体类中有,但是接口没定义的方法,则不能使用。
}
}