Java接口的实际使用&为什么java要用接口

本文通过一个加油站和三辆车的场景,详细介绍了接口在Java中的应用。通过定义油接口和实现该接口的不同车辆实体类,展示了接口如何提供统一的操作规范,同时保持各实体类的特性和行为差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口写法说明:
注: 本文本主要用来说明,接口在工程中的应用。

你是否遇到过这样的接口语法!!!!
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  类名   这种写法,则只能调用接口定义的方法。实体类中有,但是接口没定义的方法,则不能使用。

    }


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值