先写一个接口,定义一些公用的方法
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个无参的实例。但是假如父类里面是有参的构造函数,那子类就是必须继承才能使用。