Java中的super和this都是關(guān)鍵字,用于訪問(wèn)對(duì)象的構(gòu)造方法和變量。盡管它們很相似,但是它們有一些關(guān)鍵的區(qū)別。
this是一個(gè)關(guān)鍵字,用于引用當(dāng)前對(duì)象的實(shí)例變量,即調(diào)用當(dāng)前類中的變量和方法。通常使用this是為了區(qū)分局部變量和實(shí)例變量或者是為了在構(gòu)造器中調(diào)用另一個(gè)構(gòu)造器。它也可以用于作為構(gòu)造函數(shù)中的第一個(gè)語(yǔ)句來(lái)調(diào)用另一個(gè)構(gòu)造函數(shù)。
public class ClassName { int num; public ClassName(int num) { this.num = num; } }
上面的代碼中,this.num表示實(shí)例變量num,num表示局部變量num。
super是一個(gè)關(guān)鍵字,用于訪問(wèn)父類的構(gòu)造方法、成員變量和成員方法。在子類的構(gòu)造方法中,可以使用super語(yǔ)句來(lái)調(diào)用父類的構(gòu)造方法,并執(zhí)行父類構(gòu)造方法中的代碼。
public class ChildClassName extends ParentClassName { public ChildClassName() { super(); // 調(diào)用父類的構(gòu)造方法 } }
上面的代碼中,super();表示調(diào)用父類的構(gòu)造器。
總的來(lái)說(shuō),this用于引用當(dāng)前類中的實(shí)例變量和方法,而super用于訪問(wèn)父類中的構(gòu)造方法、成員變量和成員方法。在構(gòu)造器中,this和super都可以用來(lái)調(diào)用另一個(gè)構(gòu)造器。在使用它們時(shí),需要注意它們的上下文語(yǔ)境。