


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
详解Java中super的几种用法并与this的区别1、子类的构造函数如果要引用super的话,必须把super放在函数的首位class Base Base() System.out.println(Base);public class Checket extends Base Checket() super();/调用父类的构造方法,一定要放在方法的首个语句System.out.println(Checket);public static void main(String argv) Checket c = new Checket();如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。2、在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.class Country String name;void value() name = China;class City extends Country String name;void value() name = Hefei;super.value();/不调用此方法时,返回的是父类的成员变量的值nullSystem.out.println(name);System.out.println();public static void main(String args) City c=new City();c.value();为了在子类中引用父类中的成员变量name和方法value(),在代码中使用了super、和super.value(),若不调用super.value()时,返回父类成员变量默认值null,调用此方法时,super.value()方法把成员变量name赋值为China,再利用调用父类的成员变量的值。另外,要注意的是调用的是成员变量的值class Country String name=xianfan;String value(String name) name = China;return name;class City extends Country String name;String value(String name) name = Hefei;super.value(失败);/不调用此方法时,返回的是父类的成员变量的值nullSystem.out.println(name);System.out.println();return name;public static void main(String args) City c=new City();c.value(成功);结果为:Hefeixianfan此时,返回的值是父类成员变量的值xianfan,而此时的super.value()方法是不起作用的。3、用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);结果为:A Person.A chinese.A person name is:kevinhis name is:kevinA person name is:kevinhis name is:kevinhis age is:22在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。但这样似乎就有点画蛇添足的味道了。4、super和this的异同:1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)3)super:它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。7)super()和this()均需放在构造方法内第一行。8)尽管可以用this调用一个构造器,但却不能调用两个。9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东依顿电子科技股份有限公司招聘HRBP岗人员模拟试卷有完整答案详解
- 2025北京清华附中上庄学校招聘模拟试卷及完整答案详解一套
- 2025年永新县面向社会公开招聘城市社区专职网格员【37人】考前自测高频考点模拟试题及一套参考答案详解
- 2025年开封杞县消防救援大队招聘政府专职消防员10人考前自测高频考点模拟试题附答案详解
- 2025年金华永康市医疗卫生单位招聘事业单位工作人员39人模拟试卷及一套答案详解
- 2025海南文昌市人民医院编外工作人员招聘(9号)考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025呼伦贝尔市发展和改革委员会竞争性比选事业单位工作人员考前自测高频考点模拟试题有完整答案详解
- 2025年云数融合项目发展计划
- 2025北京回龙观医院招聘2人(第三批)考前自测高频考点模拟试题及参考答案详解一套
- 2025江苏泰州学院招聘专职辅导员和专任教师17人考前自测高频考点模拟试题及答案详解1套
- 2025至2030 中国热成型钢(PHS)行业现状调查与前景策略研究报告
- 执法监督培训课件
- 股权投资基金培训课件
- 千川投手培训课件
- 2025年中国注塑机熔胶筒螺杆市场调查研究报告
- 职业培训班级管理制度
- 第一章第二节《孟德尔自由组合定律应用9331变形及致死现象》课件-人教版必修二
- DB31/T 1093-2018混凝土砌块(砖)用再生骨料技术要求
- 培训机构教务老师工作计划
- 2025新人教版美术一年级下册《难忘的童年》教学设计教案
- 《乐东黎族自治县国土空间总体规划 (2020-2035)》
评论
0/150
提交评论