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

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

java中的this指向?

java中的this指向?

DIEA 2018-08-28 12:06:09
如題,子類中調用父類的方法,該方法中的this為什么是指向子類,而不是父類自己??剛接觸java,有點懵,請前輩指點。
查看完整描述

2 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

父類super
自己this

查看完整回答
反對 回復 2018-09-16
?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

this 是一個關鍵字,在默認情況下,this指向的是這個關鍵字所處的方法所屬的類的實例,同時這個實例即是你調用this時所處的實例;但是在內部類中你也可以顯式得修改this的指向,比如:

public class Main {


    public static class Foo {


        public class Bar {

            public void func() {

                System.out.println(Foo.this.hashCode());

            }

        }


        public void func() {

            System.out.println(this.hashCode());

            new Bar().func();

        }


    }


    public static void main(String... args) {

        new Foo().func();

    }


}

運行后,會輸出兩個相同的數字,這意味著你在內部類Bar中可以顯式得修改this的指向從而對外部類Foo進行操作。

super 同樣是個關鍵字, 它一般用來在繼承得到的子類中調用父類非私有的屬性、方法,子類是從父類繼承而來,這就意味著如果父類不是一個空類,那么父類一定有一些屬性、方法是子類所沒有的或子類已經覆寫了。
如果是子類所沒有的屬性和方法,這時this顯然就獲取不到這些屬性和方法,因此需要使用super來聲明"我要從父類中拿到這個屬性、調用這個方法"。
如果是子類已經覆寫了的方法,那么顯然存在一個方法的兩個版本,在不指定super的情況下,Java 是默認你調用的是子類的方法,你寫不寫this都無關緊要,如果你想調用父類的該方法,就需要super關鍵字來指定你想調用的方法版本。


查看完整回答
反對 回復 2018-09-16
  • 2 回答
  • 0 關注
  • 1067 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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