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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值