欢迎来到天天文库
浏览记录
ID:50404698
大小:33.53 KB
页数:3页
时间:2020-03-08
《详解Java中super的几种用法并与this的区别.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、详解Java中super的几种用法并与this的区别1、子类的构造函数如果要引用super的话,必须把super放在函数的首位classBase{Base(){System.out.println("Base");}}publicclassChecketextendsBase{Checket(){super();//调用父类的构造方法,一定要放在方法的首个语句System.out.println("Checket");}publicstaticvoidmain(Stringargv[]){Checketc=newChecket();}}如果
2、想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。2、在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.classCountry{Stringname;
3、voidvalue(){name="China";}}classCityextendsCountry{Stringname;voidvalue(){name="Hefei";super.value();//不调用此方法时,super.name返回的是父类的成员变量的值nullSystem.out.println(name);System.out.println(super.name);}publicstaticvoidmain(String[]args){Cityc=newCity();c.value();}}为了在子类中引用父类中的成员变
4、量name和方法value(),在代码中使用了super、super.name和super.value(),若不调用super.value()时,super.name返回父类成员变量默认值null,调用此方法时,super.value()方法把成员变量name赋值为China,再利用super.name调用父类的成员变量的值。另外,要注意的是super.name调用的是成员变量的值classCountry{Stringname="xianfan";Stringvalue(Stringname){name="China";returnname
5、;}}classCityextendsCountry{Stringname;Stringvalue(Stringname){name="Hefei";super.value("失败");//不调用此方法时,super.name返回的是父类的成员变量的值nullSystem.out.println(name);System.out.println(super.name);returnname;}publicstaticvoidmain(String[]args){Cityc=newCity();c.value("成功");}} 结果为:Hef
6、eixianfan此时,super.name返回的值是父类成员变量的值xianfan,而此时的super.value()方法是不起作用的。3、用super直接传递参数:classPerson{publicstaticvoidprt(Strings){System.out.println(s);}Person(){prt("APerson.");}Person(Stringname){prt("Apersonnameis:"+name);}}publicclassChineseextendsPerson{Chinese(){super();/
7、/调用父类构造函数(1)prt("Achinese.");//(4)}Chinese(Stringname){super(name);//调用父类具有相同形参的构造函数(2)prt("hisnameis:"+name);}Chinese(Stringname,intage){this(name);//调用当前具有相同形参的构造函数(3)prt("hisageis:"+age);}publicstaticvoidmain(String[]args){Chinesecn=newChinese();cn=newChinese("kevin");c
8、n=newChinese("kevin",22);}} 结果为:APerson.Achinese.Apersonnameis:kevinhisnameis:kevinAperso
此文档下载收益归作者所有