在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java中的this指向?

java中的this指向?

如題,子類中調(diào)用父類的方法,該方法中的this為什么是指向子類,而不是父類自己??
剛接觸java,有點(diǎn)懵,請(qǐng)前輩指點(diǎn)。

回答
編輯回答
薄荷糖

this 是一個(gè)關(guān)鍵字,在默認(rèn)情況下,this指向的是這個(gè)關(guān)鍵字所處的方法所屬的類的實(shí)例,同時(shí)這個(gè)實(shí)例即是你調(diào)用this時(shí)所處的實(shí)例;但是在內(nèi)部類中你也可以顯式得修改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();
    }

}

運(yùn)行后,會(huì)輸出兩個(gè)相同的數(shù)字,這意味著你在內(nèi)部類Bar中可以顯式得修改this的指向從而對(duì)外部類Foo進(jìn)行操作。

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

2017年7月2日 00:32
編輯回答
臭榴蓮

this 你就理解為是一個(gè)類自己的某個(gè)具體的實(shí)例

2018年1月28日 22:21
編輯回答
怣人

this和super都代表一個(gè)對(duì)象,this指的是對(duì)象自己,super指的父類對(duì)象自己。兩者都只能放在第一樣,因此二者不能同時(shí)存在。因?yàn)閠his指的是自己,所以不能指向父類,這也就是super存在的意義吧。

2018年7月26日 14:34
編輯回答
青檸

父類super
自己this

2017年7月4日 22:42
編輯回答
妖妖

這個(gè)你別太過糾結(jié),才開始學(xué)都這樣了,你就先記住this調(diào)用自己,super調(diào)用父類,這是Java設(shè)計(jì)的一種語(yǔ)言規(guī)則。你先知道他的作用,以后再深入了解。

2017年10月18日 05:17