接口、抽象类、继承、多态的一些实现方式

先写一个接口,定义一些公用的方法

public interface KeyPrefix {
    public int setExpireSeconds();
    public String setPrefix();
}

在定义一个抽象类实现这些方法,为后面的继承做准备

public abstract class BasePrefix implements KeyPrefix {//abstract类不能直接new
    //属性
    private int expireSeconds;
    private String prefix;

    //构造函数
    public BasePrefix (int expireSeconds,String prefix){
        this.expireSeconds = expireSeconds;
        this.prefix = prefix;
    }

    public BasePrefix (String prefix){//默认0代表永不过期
        this(0,prefix);
    }

    //方法
    @Override
    public int setExpireSeconds() {
        return expireSeconds;
    }

    @Override
    public String setPrefix() {//前缀为  当前类名:getPrefix(属性名)
        String className = getClass().getSimpleName();
        return className + ":" + prefix+ ":";
    }
}

最后就是实现最终的类了

public class MiaoshaUserKey extends BasePrefix {

    public static final int TOKEN_EXPIRE = 2*3600;

    private MiaoshaUserKey(int expireSeconds,String prefix) {
        super(expireSeconds,prefix);
    }

    public static MiaoshaUserKey sessionToken = new MiaoshaUserKey(TOKEN_EXPIRE,"tok");
}

父类中的无参构造函数是默认可以继承的,子类中可以直接new个无参的实例。但是假如父类里面是有参的构造函数,那子类就是必须继承才能使用。

经验分享 程序员 微信小程序 职场和发展