我很困惑
超级.i = j+1;
这行代码。我认为它只改变了A类中的变量i,并没有改变B类中的继承变量i。
为了使问题清楚,我添加了另一个示例(示例 2)。在示例 2 中,我们使用
超级(余额,名称);
初始化从父类继承的属性。当我们调用 super 并更改变量 balance 和 name 时,我们不会更改父类中的变量 balance 和 name。
在示例 1 中,我们使用
超级.i = j+1;
我们实际上更改了父类中的变量 i,而不是从父类继承的变量 i。这两个样本有什么区别?太感谢了。
2019-07-18 编辑
我在示例2中添加了一个diriver类。我们在CheckingAccount中创建一个对象c后,c中的余额为200,名称为“XYZ”。我们在子类中使用 super(argument),我们是否更改超类中的余额和名称?如果不是,为什么要更改样本 1 中的变量 i?
//Sample one
class A{
int i;
}
class B extends A{
int j;
void display() {
super.i = j+1;
System.out.println(j+ " "+i);
}
}
public class CC {
public static void main(String[] args) {
// TODO Auto-generated method stub
B obj = new B();
obj.i =1;
obj.j = 2;
obj.display();
}
}
//sample 2
//parent class
public class BankAccount {
protected double balance=0;
protected String name="ABC";
public BankAccount(double balance, String name) {
this.balance = balance;
this.name = name;
}
}
//child class
public class CheckingAccount extends BankAccount{
final int CHARGE = 5;
final int NO_CHARGE = 0;
private boolean hasInterest;
public CheckingAccount(double balance, String name, boolean hasInterest) {
super(balance,name);
this.hasInterest = hasInterest;
}
}
//driver class
public class DriveClass {
public static void main(String[] args) {
CheckingAccount c = new CheckingAccount(200,"XYZ",true);
}
}
输出是
2 3
青春有我
千万里不及你
相关分类