视窗
loading...
您现在的位置:首页 > IT认证 > JAVA >

Javathis、super的用法


Javathis、super的用法

  在Java中,this通常指当前对象,super则指父类的。当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便 可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。如果你想引用父类的某种东西,则非 super莫属。由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论,希望能帮助你区分和掌握它们两个。

    在一般方法中

    最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某 个成员,使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”来引用当前对象的某个方法,但这时this 就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:

    public class DemoThis{

    private String name;

    private int age;

    DemoThis(String name,int age){

    setName(name); //你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的

    setAge(age);

    this.print();

    }

    public void setName(String name){

    this.name=name;//此处必须指明你要引用成员变量

    }

    public void setAge(int age){

    this.age=age;

    }

    public void print(){

    System.out.println("Name="+name+" Age="+age);//在此行中并不需要用this,因为没有会导致混淆的东西

    }

    public static void main(String[] args){

    DemoThis dt=new DemoThis("Kevin","22");

    }

    }

    这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。

    class Person{

    public int c;

    private String name;

    private int age;

    protected void setName(String name){

    this.name=name;

    }

    protected void setAge(int age){

    this.age=age;

    }

    protected void print(){

    System.out.println("Name="+name+" Age="+age);

    }

    }

    public class DemoSuper extends Person{

    public void print(){

    System.out.println("DemoSuper:");

    super.print();

    }

    public static void main(String[] args){

    DemoSuper d DemoSuper();

    ds.setName("kevin");

    ds.setAge(22);

    ds.print();

    }

    }

    在DemoSuper中,重新定义的print方法覆写了父类的print方法,它首先做一些自己的事情,然后调用父类的那个被覆写了的方法。输出结果说明了这一点:

    DemoSuper:

    Name=kevin Age=22

    这样的使用方法是比较常用的。另外如果父类的成员可以被子类访问,那你可以像使用this一样使用它,用“super.父类中的成员名”的方式,但常常你并不是这样来访问父类中的成员名的。

    在构造函数中

    构造函数是一种特殊的方法,在对象初始化的时候自动调用。在构造函数中,this和super也有上面说的种种使用方式,并且它还有特殊的地方,请看下面的例子:

    class Person{

    public static void prt(String s){

    System.out.println(s);

    }

    Person(){

    prt("A Person.");

    }

    Person(String name){

    prt("A person name is:"+name);

    }

    }

    public class Chinese extends Person{

    Chinese(){

    super();  //调用父类构造函数(1)

    prt("A chinese.");//(4)

    }

    Chinese(String name){

    super(name);//调用父类具有相同形参的构造函数(2)

    prt("his name is:"+name);

    }

    Chinese(String name,int age){

    this(name);//调用当前具有相同形参的构造函数(3)

    prt("his age is:"+age);

    }

    public static void main(String[] args){

    Chinese cn=new Chinese();

    cn=new Chinese("kevin");

    cn=new Chinese("kevin",22);

    }

    }

    在这段程序中,this和super不再是像以前那样用“。”连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。 super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在 Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你可以将它替换为“this.prt”(因为它 继承了父类中的那个方法)或者是“super.prt”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。但这样似乎就有点画蛇添足的味道 了。

    最后,写了这么多,如果你能对“this通常指代当前对象,super通常指代父类”这句话牢记在心,那么本篇便达到了目的,其它的你自会在以后的编程实践当中慢慢体会、掌握。另外关于本篇中提到的继承,请参阅相关Java教程。

闂傚倷绶氬ḿ褍螞瀹€鍕;闁跨噦鎷�

闂傚倷绶氬ḿ褍螞瀹€鍕;闁跨噦鎷�

闂傚倷绶氬ḿ褍螞濞嗘挸绀夐柡鍥ュ灩閸屻劑鏌曢崼婵囧閻庢艾顭烽弻銊モ攽閸℃ê鐝旂紓浣瑰敾缂嶄線寮婚敓鐘茬妞ゆ劧瀵岄埀顒侇殜閺岀喖鎽庨崒姘ギ闂佽鍟崶褔鍞堕梺缁樻煥閹芥粎绮旈鍕厽闁绘ê寮堕幖鎰版煟鎺抽崝灞藉祫闂佺鎻粻鎴g箽闂備浇娉曢崳锕傚箯閿燂拷
闂傚倷绀侀幖顐︽偋濠婂牆绀堟繛鎴欏灪閸嬬喐銇勯弽顐沪闁绘帡绠栭弻鏇熺箾閸喖濮庨梺璇叉唉椤曆嗗絹闂佹悶鍎荤徊鑺ユ櫠閹绘崡褰掓偂鎼淬垹娈楅悗娈垮枛閻栧吋淇婇悜鑺ユ櫆闁告挆鍐帗婵犵數鍋涢悺銊у垝瀹€鈧懞閬嶆嚃閳哄嫬小婵炲鍘ч悺銊╁吹閸岀偞鐓涢柛鎰╁妼閳ь剝宕电划鏃囥亹閹烘挾鍙嗗┑鐐村灱濞呮洜鈧熬鎷�闂備浇顕уù鐑藉极閹间降鈧焦绻濋崑顖氱秺瀹曞崬螣鐠囧樊娼梻浣风串缁蹭粙寮甸鍕仼闁告鍊戞惔銊ョ倞闁挎繂鎳庨埛澶嬬箾鐎电ǹ甯堕柟铏耿閻涱喚鈧綆鍠栫粻锝嗙節婵犲倸顏柟鏋姂濮婃椽宕ㄦ繝鍐f嫻缂備礁顑嗙敮锟犲箚閸ャ劌顕遍柡澶嬪灥閸炪劑姊洪幖鐐插姌闁告柨绉归敐鐐哄冀椤儱閰e畷鍫曟晲閸涱厸鎷ゅ┑鐐差嚟閸樠囧箠濮椻偓楠炲棝宕橀鑲╊槹濡炪倖鍔戦崹娲儊閺冣偓缁绘繈濮€閿濆棛銆愰柣搴㈣壘閹芥粌危閹扮増鏅搁柨鐕傛嫹闂傚倷鑳堕幊鎾绘偤閵娾晛鍨傞柛鎰ゴ閸亪鏌熺€电ǹ小闁绘帒锕ら埞鎴︽偐閸欏鎮欏┑鐐叉噷閸ㄥ綊婀侀梺鎸庣箓濡盯鎯屾惔銊︾厓鐟滄粓宕滃▎鎾崇疇闁归偊鍏橀弸鏃堟煙鏉堥箖妾柛瀣儔閺屾盯顢曢妶鍛€剧紓鍌氱М閸嬫捇姊绘担鐟扮亰闁绘帪绠撴俊鐢告倷閻㈢數顦梺鍝勫暙閻楀棛鐥閺屾盯骞囬娑氥€婄紓浣插亾闁跨噦鎷�闂備浇顕х花鑲╁緤婵犳熬缍栧鑸靛姇閸ㄥ倹绻濇繝鍌氼伀妞も晠鏀遍妵鍕箳閹存繃娈茬紓浣风贰閸o絽顕i崼鏇熷€烽柛顭戝亝閻濐亜鈹戦悙鑼闁搞劌澧庣划姘舵焼瀹ュ懐鍔撮梺鍛婂壃閸涱垼妲繝鐢靛Х椤d粙鍩€椤掆偓閸熷潡鍩€椤掑倹鍤€闁挎洏鍨洪幏鍛村礈閹绘帗顓块梻浣呵归張顒傛崲瀹ュ鑸归柟缁㈠枟閻撴瑩鎮楀☉娆嬬細濠⒀屽墯缁绘繈鍩€椤掍焦濯撮柛锔诲幘閹虫繈姊洪崜鑼帥闁稿鎳愮槐鐐哄焵椤掑嫭鈷戦柣鐔稿閹界娀鏌eΔ鍐ㄤ户闁瑰箍鍨归~婵嬵敄閼恒儳浜欓梻浣告惈濞诧箓鎯岄鐐床闁糕剝绋掗悡娆愩亜閹炬鍟版禒鏉戭渻閵堝棙澶勯柛鎾跺枎閻g兘鏁愰崱娆戠槇闂佸憡鍔忛弲鈺佄i鐐粹拺闁奸€涘嵆閸濈儤鎱ㄦ繝鍌ょ吋闁哄苯鐗撻獮姗€顢欓懖鈺婂悈闂備胶鎳撻悺銊у垝瀹ュ洤鍨濋柨鏇炲€归悡銉︾箾閹寸倖鎴濓耿閻楀牏绡€闁逞屽墴楠炲秹顢欓幆褍瑙︽繝鐢靛仜濡霉妞嬪海鐜绘俊銈呭暟绾惧ジ鏌¢崒娑卞劌闁稿骸绻掗埀顒冾潐閹哥ǹ螞濠靛棛鏆︽慨妯垮煐閸嬫劗绱撴担璐細鐟滅増鍨垮娲箰鎼粹€虫灆闂佺懓鍤栭幏锟�闂備浇顕уù鐑藉极閹间礁绠犻柟鎹愬煐閺嗘粍銇勯幇鍓佺暠缂佲偓閸℃ḿ绠鹃柟瀵镐紳椤忓牆鏋侀柛顐f礃閸婄數鐥鐐村婵炲吋鍔欓弻娑㈠Ω閿斿墽鐓佺紓浣稿€圭敮锟犮€佸Δ浣瑰缂佸鏅濋锔解拺閻熸瑥瀚欢鑼磼缂佹ê鐏寸€殿噮鍋婇、娆撴偩瀹€濠冪カ婵犳鍠楅妵娑㈠磻閹剧粯鐓冪憸婊堝礈濞嗘挸纾归柛婵勫劤缁€濠囨倵閿濆骸鏋熼柛搴$Ч閺屾盯寮撮妸銉ョ瑢閻熸粎澧楃敮妤呮偂閳ь剙顪冮妶鍡楃瑨闁挎洩濡囩划鍫ユ晸閿燂拷闂傚倷娴囨竟鍫熴仈缁嬫娼栧┑鐘崇閻掗箖鏌熺紒銏犳灈婵☆偅锕㈤弻锝夋偄缁嬫妫嗙紒缁㈠幐閸嬫捇姊绘担鐟邦嚋缂佸甯掗悾婵嬪箹娴e摜锛涢梺鍝勭Р閸斿酣銆呴悜鑺ョ叆闁绘洖鍊圭€氾拷:webmaster@jscj.com闂傚倷绶氬ḿ褍螞瀹€鍕;闁瑰墽绮悡鐔搞亜椤愵偄骞樼紒浣哄厴閺岋綁鏁傜捄銊х厯闂佽桨绀佺粔褰掑极閹剧粯鏅搁柨鐕傛嫹4008816886

相关文章

无相关信息
更新时间2022-03-13 11:11:04【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝棛绠剧痪顓㈩棑缁♀偓閻庢鍠栭…鐑藉箖閵忋垺鍋橀柍銉ュ帠婢规洟姊哄Ч鍥х伄婵炲懌鍎甸幃鐑芥偋閸喓妲戠紓鍌氬€搁崐鎼佸磹妞嬪孩濯奸柡灞诲劚绾惧鏌熼悙顒佺伇闁衡偓娴犲鐓熸俊顖氭惈缁狙冾熆鐠哄搫顏柡宀嬬秮楠炴﹢宕橀崣澶嬵啀闂備胶顢婄亸娆愮仚濡ゆ浜欓崡鍐茬暦閻撳簶鏀介柛顐亝鑲栨繝鐢靛У椤旀牠宕板Δ浣轰粴婵犵數鍋涢ˇ鎵矙閹烘ぜ鈧焦绻濋崶銊㈡嫽婵炶揪绲介幉锟犲疮閻愬绠鹃悹鍥囧懐鏆ら悗瑙勬礉椤鈧潧銈稿鍫曞箣閻欌偓閺€銊╂⒒娴g瓔娼愰柛搴″悑閹便劑濡舵径瀣簵闂佸搫娲㈤崹娲偂閸愵喗鐓冮弶鐐村椤︼箓鏌$€c劌鈧牜鎹㈠☉銏犻唶闁绘梻纭堕幏褰掓⒑闂堟稒鎼愰悗姘煎灣缁鈽夐姀鈩冩珳闂佸憡娲﹂崹鐗堢閹扮増鈷掑ù锝呮啞閹牓鏌¢崼顐㈠缂侇喗鐟╅獮瀣晝閳ь剟鎮″┑瀣婵烇綆鍓欓埀顒侇殜閹潡鍩€椤掑嫭鈷戦柛婵嗗瀹告繂鈹戦锝呭籍鐎规洦鍨抽埀顒婄秵閸犳鍩涢幒鎳ㄥ綊鏁愰崨顔兼殘闂佽鍨伴悧鎾诲蓟閿濆鏁囬柣鎴濇妤旂紓鍌欐祰娴滎剟宕戦悙鐢电當闁绘梻鍘ч悞鍨亜閹烘垵顏柛瀣戦妵鍕即濡も偓娴滈箖鎮楃憴鍕闁绘牕銈搁妴浣肝旀担鍝ョ獮闁诲函缍嗛崑鍛存偟閵娾晜鈷掗柛灞剧懅椤︼箓鏌熷ù瀣⒉缂佹鍠庤灃闁告侗鍘鹃悰銉モ攽鎺抽崐鏇㈠箠韫囨稑纾垮┑鐘插暟缁♀偓婵犵數濮撮崐缁樻櫠濞戙垺鐓冮梺鍨儏缁楁帡妫佹径鎰叆婵犻潧妫欓崳娲煕閵堝懐澧㈤柟鍙夋倐閹囧醇濠靛懎鍨旈梻浣芥〃缁€浣衡偓姘嵆瀵鈽夐姀鐘靛姶闂佸憡鍔︽禍鏍i崼銏㈢=濞达絽鎼牎闂佺粯鎼换婵嗩嚕鐠囨祴妲堥柕蹇曞閵婏负浜滈柡鍐ㄥ€哥敮鑸点亜椤愵偂閭慨濠呮缁瑥鈻庨幆褍澹夐梺钘夊暣娴滃爼寮婚弴銏犵倞鐟滃秹顢旈鐘亾濞堝灝鏋熸繛鍏肩懆閻忓啴姊洪柅鐐茶嫰婢ь垳绱掗崒姘毙i柕鍫秮瀹曟﹢鍩℃担鎻掍壕闁汇垹鎲¢崑鈩冪箾閸℃绠版い蹇d簽缁辨帡鍩€椤掑嫬鐒垫い鎺戝€荤壕浠嬫煕鐏炵偓鐨戠€涙繈姊洪幐搴㈠濞存粠浜濇穱濠勨偓娑櫳戞刊瀵哥磼椤栨稒绀冮柣搴☆煼濮婅櫣鎲撮崟顐㈠Б缂佸墽铏庨崣鍐箖閿熺姴绠i柨鏃囆掗幏娲⒒閸屾氨澧涢柛鎰吹濡叉劙鏁撻悩宕囧幈闂佸搫娲ㄩ崑娑€€傚畷鍥╂/妞ゆ挻绋戞禍鎯р攽閻樺灚鏆╁┑顔惧厴瀵偊宕ㄦ繝鍐ㄥ伎闂佺粯鍨煎Λ鍕几娓氣偓閺屾稑鈽夊鍫熸暰闂佸憡鐟ョ换姗€寮婚敐澶婄闁挎繂妫Λ鍕⒑閸濆嫷鍎庣紒鑸靛哺瀵鈽夊Ο閿嬵潔濠殿喗顨呴悧濠囧极妤e啯鈷戦柛娑橈功閹冲啰绱掔紒妯虹伌濠碉紕鏁诲畷鐔碱敍濮橀硸鍟嬮梻浣告啞椤ㄥ牓宕戦悢鍝ヮ浄闁兼祴鏅濈壕濂告煟閹伴潧澧柛鏂诲€栭妵鍕敇閻樻彃骞嬮悗娈垮枛椤兘骞冮姀銈嗗亗閹艰揪缍嗗Σ鍫曟煟閻斿摜鐭婄紒缁樺浮瀵偊顢欑亸鏍潔闂侀潧楠忕槐鏇㈠储娴犲鈷戦悷娆忓閸斻倝鏌f幊閸斿海鍒掗崼鈶╁亾閿濆骸鏋熼柣鎾寸洴閹﹢鎮欓棃娑楀缂備讲鍋撻柛鎰典簴閸嬫捇宕归锝囧嚒闁诲孩鍑归崳锝夊春閳ь剚銇勯幒鎴姛缂佸娼ч湁婵犲﹤鎳庢禒锔剧磼閸屾稑娴鐐达耿椤㈡瑧鎲撮敐鍡楊伖闂傚倷鑳舵灙缂佺粯鍔欏畷銉р偓锝庡枛妗呴梺缁樻煥閸氬鎮¢弴銏$厪濠电偛鐏濋埀顒佹礀閻g敻宕卞☉娆戝幈闂佸磭鎳撻悘婵嬫倶閸欏娈介柣鎰煏椤忓棗寮茬紓鍌氬€烽悞锕佹懌濠电偛鎳庡ú顓烆潖缂佹ḿ鐟归柍褜鍓欏玻鑳槾闁瑰箍鍨藉畷鍗炩槈濡吋鐓f繝鐢靛Т閿曘倝骞婃径鎰;闁瑰墽绮ˉ鍫熺箾閹寸偞鐨戦柛鏃戝灠閳规垿顢欑涵閿嬫暰濠碉紕鍋犲Λ鍕亱闂佸憡鍔戦崝澶娢i崼鐔稿弿婵妫楁晶濠氭煛閸♀晛浜濈紒缁樼箘閸犲﹤螣濞茬粯缍夐梻浣呵归鍛村箠濮椻偓楠炲啴鎮滈挊澶屽幐闂佸憡娲﹂崜銊ф閹剧粯鈷掗柛灞剧懆閸忓瞼鐥鐐靛煟鐎规洘绮岄埞鎴炵節閸屾粎鈽夊┑鐘垫暩閸嬫盯鎮洪妸褍鍨濈€广儱娲ら崹婵嬫煙閹规劦鍤欓柦鍐枛閺屻劑鎮㈤崫鍕戙垻鐥幆褍鎮戦柟渚垮妼椤粓宕卞Δ鈧~顐⑩攽閻愯尙澧曠紓宥咃工椤繐煤椤忓嫬绐涙繝鐢靛Т閸熺娀骞忔繝姘拺闁告縿鍎辨牎闂佺粯顨堟慨鎾敋閿濆棛绡€婵﹩鍘兼禍婊堟⒑閸忚偐銈撮柡鍛〒缁﹪鏁冮崒娑掓嫼闂佸憡鎹佺亸娆撳储濞戙垺鐓曢柣妯虹-椤f煡鎮楅棃娑栧仮鐎规洖銈告俊鐑芥晜鐟欏嫬顏归梻浣告惈椤﹂亶宕戦悙瀵哥彾闁糕剝绋戠粈澶屸偓骞垮劚椤︿即鎮″▎鎾寸厽闁绘柨鎼。濂告煕閻樼繀缂氶柍褜鍓氶鏍闯椤曗偓瀹曟垶绻濋崶鈺佺ウ濠碘槅鍨甸崑鎰閸忛棿绻嗘い鏍ㄧ矌鐢稒銇勮箛鏇炴灈婵﹦绮幏鍛存嚍閵壯佲偓濠囨⒑闂堚晝绉剁紒鐘虫崌閻涱喛绠涘☉娆愭闂佽法鍣﹂幏锟�

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: