为了账号安全,请及时绑定邮箱和手机立即绑定

关于java中的继承

关于java中的继承

皈依舞 2023-03-31 16:57:06
我很困惑超级.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 oneclass 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 classpublic class BankAccount {    protected double balance=0;    protected String name="ABC";    public BankAccount(double balance, String name) {        this.balance = balance;        this.name = name;    }}//child classpublic 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 classpublic class DriveClass {    public static void main(String[] args) {        CheckingAccount c = new CheckingAccount(200,"XYZ",true);}}输出是2 3
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

这是iB 类中隐藏i在 A 类中的位置。 和this.i是super.i不同的。


class A {

   int i;


   void print() {

      System.out.println("i = " + i);

   }

}


class B extends A {

   int j;

   int i;


   void display() {

      i = j + 1;

      super.i = 1000;

      System.out.println(j + " " + i);

      print(); // this will print the i in A

   }

}


查看完整回答
反对 回复 2023-03-31
?
千万里不及你

TA贡献1784条经验 获得超9个赞

超级(余额,名称)

这就调用了父类的构造函数来初始化父类中的变量balance和name。是的,确实改变了父类中balance和name的值

超级.i = j+1

这将 j+1 分配给父类变量 i。

一种是通过构造函数初始化父类变量,另一种是直接给父类变量赋值。两者不同


查看完整回答
反对 回复 2023-03-31
  • 2 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信