JAVA基础之旅——方法模版中,父类方法使用子类同名变量的方法

有时候在开发中会遇到方法模版的问题,具体场景为:
1、为了代码质量,会将一个出现较多的代码抽出来,放入抽象父类,然后子类继承父类。
2、但是如果抽出来的方法需要使用到类的变量就会变的麻烦,因为JAVA中方法支持Override,但是变量是不行的,所以如果直接在父类中通过变量名使用变量,那么当我们的子类变量不一样时 ,得到的结果就不是想要的了。
3、既然方法支持Override,那我们可以通过getX()的方法访问变量,然后再子类中重写getX()方法,这样就能打到目的了。

    public abstract class AbstractOauthLogin implements OauthLoginInterface {

    private String authUrl;
    private String clientId;

    @Override
    public String redirectUrl(String state) {
        return getAuthUrl()+getClientId();
    }
    public String getAuthUrl() {
        return authUrl;
    }
    public String getClientId() {
        return clientId;
    }
    }
    public class AmazonOauthLogin extends AbstractOauthLogin {

    private String authUrl;
    private String clientId;

    @Override
    public String getAuthUrl() {
        return authUrl;
    }
    @Override
    public String getClientId() {
        return clientId;
    }
    }

这样,当调用父类的redirectUrl()方法时 ,实际返回的是子类的authurl+clientid。

你可能感兴趣的:(java基础之旅)