继承变量的覆盖属性我们来看看这么一道题:Java代码classParentClass{publicinti=10;}publicclassSubClassextendsParentClass{publicinti=30;publicstaticvoidmain(String[]args){ParentClassparentClass=newSubClass();SubClasssubClass=newSubClass();System.out.println(parentClass.i+subClass.i);}}classParentClass{publicinti=10;}publicclassSubClassextendsParentClass{publicinti=30;publicstaticvoidmain(String[]args){ParentClassparentClass=newSubClass();SubClasssubClass=newSubClass();System.out.println(parentClass.i+subClass.i);}}控制台的输出结果是多少呢?20?40?还是60?变量,或者叫做类的属性,在继承的情况下,如果父类和子类存在同名的变量会出现什么情况呢?这就是这道题要考查的知识点——变量(属性)的覆盖。这个问题虽然简单,但是情况却比较复杂。因为我们不仅要考虑变量、静态变量和常量三种情况,还要考虑private、friendly(即不加访问修饰符)、protected和public四种访问权限下对属性的不同影响。我们先从普通变量说起。依照我们的惯例,先来看一段代码:Java代码classParentClass{privateStringprivateField="父类变量--private";/*friendly*/StringfriendlyField="父类变量--friendly";protectedStringprotectedField="父类变量--protected";publicStringpublicField="父类变量--public";//private的变量无法直接访问,因此我们给他增加了一个访问方法publicStringgetPrivateFieldValue(){returnprivateField;}}publicclassSubClassextendsParentClass{privateStringprivateField="子类变量--private";/*friendly*/StringfriendlyField="子类变量--friendly";protectedStringprotectedField="子类变量--protected";publicStringpublicField="子类变量--public";//private的变量无法直接访问,因此我们给他增加了一个访问方法publicStringgetPrivateFieldValue(){returnprivateField;}publicstaticvoidmain(String[]args){//为了便于查阅,我们统一按照private、friendly、protected、public的顺序//输出下列三种情况中变量的值//ParentClass类型,ParentClass对象ParentClassparentClass=newParentClass();System.out.println("ParentClassparentClass=newParentClass();");System.out.println(parentClass.getPrivateFieldValue());System.out.println(parentClass.friendlyField);System.out.print...