美文网首页
29、抽象类:接口和类的混合体

29、抽象类:接口和类的混合体

作者: 爱学习的代代 | 来源:发表于2021-04-13 09:26 被阅读0次

问题: 当一个Phone 如果也想获得保质期的方法,那需要从游戏点卡里将相关的属性和方法复制出来吗? 显然是不太方便的。那么怎么实现呢?

抽象类,提供一个抽象类,该抽象类实现有效期相关的接口。然后让Phone继承该抽象类即可

抽象类代码示例:

package day15;

import java.util.Date;

public abstract class AbstractExpireDateMerchandise extends MerchandiseV2 implements ExpireDateMerchandise {
    private Date produceDate;
    private Date expirationDate;

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

    }


    public boolean notExpireInDays(int days) {
        return daysBeforeExpire() > days;
    }

    public Date getProduceDate() {
        return produceDate;
    }

    public Date getExpireDate() {
        return expirationDate;
    }

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

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


    private long daysBeforeExpire() {
        long expireMS = expirationDate.getTime();
        long left = expireMS - System.currentTimeMillis();
//      过期了
        if (left < 0) {
            return -1;
        }
        return left / (24 * 3600 * 1000);
    }

    private long daysAfterProduce(){
        long produceMS = produceDate.getTime();
        long left = System.currentTimeMillis() - produceMS;
        if (left < 0) {
            return -1;
        }

        return left / (24 * 3600 * 1000);
    }
}

说明:

  1. 抽象类使用 abstract 关键词修饰
  2. 抽象类可以继承别的类、实体类或者实现接口
  3. 抽象类不可以被实例化
  4. 抽象类也可以有自己的抽象方法
  5. 接口中可以给方法添加default关键词修饰,方法可以有方法体。
  6. 接口中是不可以有成员变量的,这是接口无法逾越的一条红线

相关文章

  • 29、抽象类:接口和类的混合体

    问题: 当一个Phone 如果也想获得保质期的方法,那需要从游戏点卡里将相关的属性和方法复制出来吗? 显然是不太方...

  • java的final关键字

    ——修饰类、接口和抽象类 final可以修饰方法,属性,类!但是不能修饰接口,抽象类;因为 接口和抽象类本身就是...

  • 5.5-全栈Java笔记:接口的定义和使用

    接口interface 接口的作用 为什么需要接口?接口和抽象类的区别? 接口就是比“抽象类”还“抽象”的“抽象类...

  • 抽象类和接口的区别

    以下两篇文章介绍了接口和抽象类的概念接口概念抽象类概念 抽象类和接口的区别: 抽象类:需要使用abstract关键...

  • 接口和抽象类的区别

    接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类...

  • 接口和抽象类

    接口和抽象类的区别? 接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制...

  • 抽象类和接口的区别

    抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。 1、抽象类和接口都不能直接...

  • Android面试题

    接口和抽象类的区别: 抽象类只能单继承,接口能多实现(一个类只能继承一个抽象类,但是能实现多个接口) 抽象类是一个...

  • Java--接口和抽象类

    ·为什么需要接口?接口和抽象类的区别?  接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束...

  • 建造者模式

    建造者抽象类或接口 建造者抽象类或接口实现类 产品抽象类或接口 产品抽象类或接口实现类 使用

网友评论

      本文标题:29、抽象类:接口和类的混合体

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