美文网首页
JAVA之接口

JAVA之接口

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-08-28 20:00 被阅读0次

1、接口的概念

  • TODO 接口的定义使用interface,而非class
  • TODO 接口中的方法,就是这个类型的规范,接口专注于规范,怎么实现这些规范,它不管
  • TODO 接口无法被实例话,也就是不可以new一个接口的实例。
import java.util.Date;
// >> TODO 接口的定义使用interface,而非class
// >> TODO 接口中的方法,就是这个类型的规范,接口专注于规范,怎么实现这些规范,它不管
// >> TODO 接口无法被实例话,也就是不可以new一个接口的实例。
public interface ExpireDateMerchandise {
    // >> TODO 接口里的方法都是public abstract修饰的,方法有名字,参数和返回值,没有方法体,以分号;结束,
    // TODO 接口注释最好写一下
    /**
     * 截止到当前,商品的保质期天数是否超过传递的天数
     *
     * @param days 截止到当前,保质期超过这么多天
     * @return 截止到当前,true如果保质期剩余天数比参数长,false如果保质期不到这多天
     */
    boolean notExpireInDays(int days);

    // >> TODO 因为接口里的方法都是且只能用public abstract修饰,所以这俩修饰符可以省略
    // >> TODO abstract就是抽象方法的修饰符,没有方法体,以分号结束
    /**
     * @return 商品生产日期
     */
    Date getProducedDate();

    /**
     * @return 商品保质期到期日
     */
    public abstract Date getExpireDate();

    /**
     * @return 截止到当前,剩余保质期还剩下总保质期长度的百分比
     */
    double leftDatePercentage();


    /**
     * 根据剩余的有效期百分比,得出商品现在实际的价值
     * @param leftDatePercentage 剩余有效期百分比
     * @return 剩余的实际价值
     */
    double actualValueNow(double leftDatePercentage);

    // >> TODO 接口里不能定义局部变量,定义的变量默认都是public static final的,这三个修饰符同样可以省略

    public static final int VAL_IN_INTERFACE = 999;

}

2、接口的使用

  • 一个类只能继承一个父类,但是可以实现多个接口
  • 如果实现的接口里定义了一样的方法,那么也没问题。但是要求方法名,参数,返回值类型都必须一摸一样
    如上创建的实现接口:
import java.util.Date;

// >> TODO 一个类以public class 开头,public class代表这个类是公共类,类名必须和文件名相同。
// >> TODO 一个类以public class后面紧跟类名,然后是一对大括号的类体
    public class jiekoushiyogn implements ExpireDateMerchandise {
    // >> TODO 类体中可以定义描述这个类的属性的变量。我们称之为成员 变量,每个成员变量的定义以;结束
    String name;
    String id;
    int count;

    public boolean notExpireIndays(int days) {
        return false;
    }

    public Date getProducedDate() {
        return null;
    }

    public Date getExpireDate() {
        return null;
    }
}

更详细的如下:

import java.util.Date;
// >> TODO 一个类只能继承一个父类,但是可以实现多个接口
// >> TODO 如果实现的接口里定义了一样的方法,那么也没问题。但是要求方法名,参数,返回值类型都必须一摸一样。
public class GamePointCard extends MerchandiseV2 implements ExpireDateMerchandise, VirtualMerchandise {

    private Date produceDate;
    private Date expirationDate;

    public GamePointCard(String name, String id, int count, double soldPrice, double purchasePrice, Date produceDate, Date expirationDate) {
        super(name, id, count, soldPrice, purchasePrice);
        this.produceDate = produceDate;
        this.expirationDate = expirationDate;
    }

    // >> TODO 一个类实现接口,就是从接口继承了抽象方法
    public boolean notExpireInDays(int days) {
        return daysBeforeExpire() > days;
    }

    public Date getProducedDate() {
        return produceDate;
    }

    public Date getExpireDate() {
        return expirationDate;
    }

    public double leftDatePercentage() {
        return 1.0 * daysBeforeExpire() / (daysBeforeExpire() + daysAfterProduce());
    }

    public double actualValueNow(double leftDatePercentage) {
        return soldPrice;
    }

    private long daysBeforeExpire() {
        long expireMS = expirationDate.getTime();
        long left = expireMS - System.currentTimeMillis();
        if (left < 0) {
            return -1;
        }
        // 返回值是long,是根据left的类型决定的
        return left / (24 * 3600 * 1000);
    }

    private long daysAfterProduce() {
        long expireMS = expirationDate.getTime();
        long left = System.currentTimeMillis() - expireMS;
        if (left < 0) {
            return -1;
        }
        // 返回值是long,是根据left的类型决定的
        return left / (24 * 3600 * 1000);
    }
}

相关文章

  • MVP简单介绍和内部接口介绍

    【Android - 框架】之MVP模式的使用 Java中的内部接口 Java中接口中的方法定义规则 Java中的...

  • Java集合【7】——— List源码超级详细解析

    1.List接口的特性 java.util.List 接口继承于 Collection 接口,与Map最大的不同之...

  • java基础概念

    java_basic 介绍 java基础 三大特性之—封装 三大特性之—继承 三大特性之—多态 抽象 接口 深拷贝...

  • Java之接口

    接口基础: 1、什么是接口: 接口也是一种引用类型,可以等同看做类 2、如何定义接口,语法: [修饰符] inte...

  • JAVA之接口

    1、接口的概念 TODO 接口的定义使用interface,而非class TODO 接口中的方法,就是这个类型的...

  • 新视野——Java的接口

    对于Java系程序猿而言,大家对于接口一定不会陌生,毕竟经常与之打交道的。我们对于Java接口的功能和使用这里就不...

  • android JNI NDK入门

    1、JNI(Java Native Interface) Java本地接口,又叫Java原生接口。它允许Java调...

  • 深入理解Java接口

    从java接口是什么到为什么,理解java接口,主要解决三个问题 1.java接口是什么2.java接口为什么3....

  • Java学习之接口

    什么是接口? 一个Java 接口(interface)是一些方法特征的集合,这些方法特征来自于具体方法,这些方法符...

  • JAVA基础之接口

    关于接口(Interface)的定义,在JAVA中是一个抽象类型,一般一个类通过继承接口来继承接口中的方法。 Ja...

网友评论

      本文标题:JAVA之接口

      本文链接:https://www.haomeiwen.com/subject/cajhkrtx.html