欢迎来到天天文库
浏览记录
ID:18934350
大小:48.00 KB
页数:8页
时间:2018-09-22
《java 变量(属性)的覆盖》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、JAVA面试题解惑系列(三)——变量(属性)的覆盖 我们来看看这么一道题:Java代码classParentClass{publicinti=10;} publicclassSubClassextendsParentClass{publicinti=30; publicstaticvoidmain(String[]args){ ParentClassparentClass=newSubClass(); SubClasssubClass=newSubClass(); System.out.pr
2、intln(parentClass.i+subClass.i);//自加System.out.println(parentClass.i);//10System.out.println(subClass.i);//30}} 控制台的输出结果是多少呢?20?40?还是60?变量,或者叫做类的属性,在继承的情况下,如果父类和子类存在同名的变量会出现什么情况呢?这就是这道题要考查的知识点——变量(属性)的覆盖。这个问题虽然简单,但是情况却比较复杂。因为我们不仅要考虑变量、静态变量和常量三种情况,还要考虑private、fri
3、endly(即不加访问修饰符)、protected和public四种访问权限下对属性的不同影响。我们先从普通变量说起。依照我们的惯例,先来看一段代码:Java代码classParentClass{privateStringprivateField="父类变量--private"; /*friendly*/StringfriendlyField="父类变量--friendly"; protectedStringprotectedField="父类变量--protected"; publicStringpublicFi
4、eld="父类变量--public"; //private的变量无法直接访问,因此我们给他增加了一个访问方法publicStringgetPrivateFieldValue(){ returnprivateField;}} publicclassSubClassextendsParentClass{privateStringprivateField="子类变量--private"; /*friendly*/StringfriendlyField="子类变量--friendly"; protectedStr
5、ingprotectedField="子类变量--protected"; publicStringpublicField="子类变量--public"; //private的变量无法直接访问,因此我们给他增加了一个访问方法publicStringgetPrivateFieldValue(){ returnprivateField;} publicstaticvoidmain(String[]args){ //为了便于查阅,我们统一按照private、friendly、protected、public
6、的顺序 //输出下列三种情况中变量的值 //ParentClass类型,ParentClass对象 ParentClassparentClass=newParentClass(); System.out.println("ParentClassparentClass=newParentClass();"); System.out.println(parentClass.getPrivateFieldValue());//父类变量--private System.out.
7、println(parentClass.friendlyField);//父类变量--friendly System.out.println(parentClass.protectedField);//父类变量--protected System.out.println(parentClass.publicField);//父类变量--public System.out.println(); //ParentClass类型,SubClass对象(子转父) ParentCla
8、sssubClass=newSubClass(); System.out.println("ParentClasssubClass=newSubClass();"); System.out.println(subClass.getPrivateFieldValue());//调用了子类的方法(方法覆盖
此文档下载收益归作者所有