import java.util.Arrays;import java.util.HashSet;import java.util.Set;class A{ PRivate String s1 = "A1" ; public String s2 = "A2" ; public String get(){ return s2 ; } public String getS1(){ return s1 ; } }class B extends A{ private String s1 = "B1" ; public String s2 = "B2" ; public String get(){ return s2 ; } public String getS1(){ return s1 ; }}
public class test{ public static void main(String[] args){ A b = new B() ; System.out.println(b.get()) ; System.out.println(b.getS1()) ; System.out.println(b.s2) ; }}
结果:B2B1A2
结论: 类在向上转型后,private的属性依然是子类的属性,因为private不能直接访问,需要提供对外方法,而方法在向上转型后依然是子类的方法,所以private的属性不会改变而非private的属性在向上转型后都会改变.方法在向上转型后是不会改变的. 总而言之,向上转型后,直接访问的属性会转型成基类的属性,方法还是子类的方法,通过子类的方法返回的字段值还是子类的值!
新闻热点
疑难解答