JAVA面试题解惑系列(三)——变量(属性)的覆盖我们来看看这么一道题:Java代码1
classParentClass{2
publicinti=10;3
publicclassSubClassextendsParentClass{6
publicinti=30;7
publicstaticvoidmain(String[]args){9
ParentClassparentClass=newSubClass();10
SubClasssubClass=newSubClass();11
System
println(parentClass
i+subClass
}控制台的输出结果是多少呢
变量,或者叫做类的属性,在继承的情况下,如果父类和子类存在同名的变量会出现什么情况呢
这就是这道题要考查的知识点——变量(属性)的覆盖
这个问题虽然简单,但是情况却比较复杂
因为我们不仅要考虑变量、静态变量和常量三种情况,还要考虑private、friendly(即不加访问修饰符)、protected和public四种访问权限下对属性的不同影响
我们先从普通变量说起
依照我们的惯例,先来看一段代码:Java代码1
classParentClass{2
privateStringprivateField="父类变量--private";3
/*friendly*/StringfriendlyField="父类变量--friendly";5
protectedStringprotectedField="父类变量--protected";7
publicStringpublicField="父类变量--public";9
//private的变量无法直接访问,因此我们给他增加了一个访问方法11
publicStri