- 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) ;
- }
- }
-
- 结果:
- B2
- B1
- A2
- 结论:
- 类在向上转型后,private的属性依然是子类的属性,因为private不能直接访问,需要提供对外方法,而方法在向上转型后依然是子类的方法,所以private的属性不会改变而非private的属性在向上转型后都会改变.方法在向上转型后是不会改变的.
- 总而言之,向上转型后,直接访问的属性会转型成基类的属性,方法还是子类的方法,通过子类的方法返回的字段值还是子类的值!
复制代码
|
|