java - 抽象父类(super class)中的 protected 字段是否应该在子类中使用 super 或 this 来访问?

标签 java inheritance abstract-class

假设我有以下抽象类。

public abstract class Account {
    protected String Id;
    protected double balance;

    public Account(String Id, double balance) {
        this.Id = Id;
        this.balance = balance;
    }
}

以及以下子类

public class CheckingAccount {

    public CheckingAccount(String Id, double balance) {
        super(Id, balance)
        if(super.balance > 10_000) this.balance += 200;
    }
}

访问 protected 成员时,子类上下文中允许使用“this”和“super”。使用其中一种比另一种更好吗? 'super' 明确了该字段的来源。我知道我可以只使用 balance 而不指定隐式参数,但我只是好奇如果想指定隐式参数,在实践中如何利用它。

最佳答案

由于 CheckingAccount 继承了 Account 的 protected 字段 balance,因此使用 superthis 关键字访问 CheckingAccount 类中的字段余额并不重要。不过,我更喜欢“这个”。

如果 Account 类(基类)中有 protected 方法,并且 CheckingAccount 类中有其重写的方法,则必须小心使用 superthis在这种情况下,因为它们不是同一个主体实现!

关于java - 抽象父类(super class)中的 protected 字段是否应该在子类中使用 super 或 this 来访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53284683/

相关文章:

java - EHCache 是如何实现它的事务的?

java - 如何退出循环或onClick(android)?

java - 如何使用 Java 按顺序连接顺序文件?

java - 在Java中实现多重继承

java - 如果表仅包含 null,如何使用构造函数实例化一个需要很长时间的对象?

c++ - 在模板派生类中禁用方法覆盖

python - 使用自定义哈希函数创建命名元组

c++ - 在派生类中更改函数访问模式

C++在虚方法中访问公共(public)变量

c# - 哪种设计最适合这种情况?