亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于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 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號