- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅论Java中this和super用法
浅论Java中this和super用法
摘要:在Java程序设计中,方法的覆盖、变量的同名情况是不可避免的,如何正确使用这些同名的变量和方法呢?本文借助于对this和super的使用描述,给出了解决的办法。
关键词:父类 子类 构造函数 覆盖 作用域 局部变量 对象 变量
在Java程序设计中,同类之间或者在父类与子类之间,往往涉及到同名变量或者构造函数的相关使用,如何使用这些同名的变量,如何调用相关的构造函数呢?对于我们这些初学者来说,会造成一定的困惑,那么如何解决这些问题呢?就牵涉到this和super的用法问题,在本文中,我们来具体分析一下this和super的用法。
一、变量或方法被屏蔽时,this和super的使用
this和super关键字都可以用来覆盖Java语言的默认作用域,使被屏蔽的方法或变量变为可见。在哪些场合会出现方法或变量被屏蔽的现象呢?
场合一:在方法内,局部变量和类的成员变量同名,或者局部变量和父类的成员变量同名时,按照Java语言中变量的作用域规则,在方法内部,只有局部变量可见
场合二:当子类的一个方法覆盖了父类的一个方法,在子类的范围内,父类的方法不可见。
场合三:当子类中定义了和父类同名的成员变量时,在子类的范围内,父类的成员变量不可见。
在这些场合当中,如果我们要使用那些被屏蔽的变量或者方法的时候,就要用到this和super关键字,使用的格式是:“this或super.成员名或方法名(参数)”,来看下边的代码:
package usesuper;
class Base{
String var=“Bases Variable”;
void method(){System.out.println(“call Bases method”);} }
public class Sub extends Base{
String var=“Subs variable”; //隐藏父类的var变量
void method(){System.out.println(“call Subs method”);} //覆盖父类的method()方法
void test() {
String var=“Local variable”;//局部变量
System.out.println(“var is ”+var);//打印test()方法的局部变量
System.out.println(“this.var is ”+this.var);//打印Sub实例的实例变量
System.out.println(“super.var is ”+super.var);//打印在Base类中定义的实例变量
method();//调用Sub实例的method()方??
this.method();//调用Sub实例的method()方法,在这个地方,this可省略
super.method();//调用Base类中定义的method()方法
}
public static void main(String args[]) {
Sub sub=new Sub();
sub.test(); }}
以上程序的打印结果如下:
var is Local variable
this.var is Subs variable
super.var is Bases Variable
call Subs method
call Subs method
call Bases method
值得注意的是,如果父类中的成员变量和方法被定义为private类型,那么子类永远无法访问他们,如果试图采用super.var的形式去访问父类的private类型的var变量,就会导致编译错误。由此可见,在Java中,this通常指当前对象, super则指父类的。
二、在构造函数中this和super的使用
构造函数是一种特殊的方法,在对象初始化的时候自动调用。在构造函数中,this和super也有上面说的种种使用方式,并且它还有特殊的地方,this和super都可以调用另外已经存在的构造函数,但是在调用时遵循的语法规则是什么呢?请看下面的代码:
class Persion{
public static void prt(String s){ System.out.println(s);}
Persion(String name){ prt(“A persion name is:”+na
您可能关注的文档
最近下载
- 2025至2030中国塑胶地板行业深度调研及前景趋势与投资发展报告.docx VIP
- 青鸟消防JBF-21SF-C系列主机说明书.pdf
- HT200电气原理图设计1.doc VIP
- Q/GDW+13053.25—2018++35-750并联电容器成套采购标准(第25部分:110(66)kV变电站10kV-6000kvar-12%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
- Q/GDW+13053.27—2018++35-750并联电容器成套采购标准(第27部分:220kV变电站10kV-8000kvar-12%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
- Q/GDW+13053.37—2018++35-750并联电容器成套采购标准(第37部分:330kV变电站35kV-40Mvar-12%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
- Q/GDW+13053.38—2018++35-750并联电容器成套采购标准(第38部分:500kV变电站35kV-60Mvar-5%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
- 柴油机发电机调试记录表格.docx VIP
- Q/GDW+13053.39—2018++35-750并联电容器成套采购标准(第39部分:500kV变电站35kV-60Mvar-12%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
- Q/GDW+13053.41—2018++35-750并联电容器成套采购标准(第41部分:220kV变电站66kV-10Mvar-12%电抗率框架式并联电容器成套装置专用技术规范).pdf VIP
文档评论(0)