A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 考拉是只猫 中级黑马   /  2014-12-7 20:59  /  1166 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.Arrays;
  2. import java.util.HashSet;
  3. import java.util.Set;
  4. class A{
  5. private String s1 = "A1" ;
  6. public String s2 = "A2" ;
  7. public String get(){
  8. return s2 ;
  9. }
  10. public String getS1(){
  11. return s1 ;
  12. }

  13. }
  14. class B extends A{
  15. private String s1 = "B1" ;
  16. public String s2 = "B2" ;
  17. public String get(){
  18. return s2 ;
  19. }
  20. public String getS1(){
  21. return s1 ;
  22. }
  23. }

  24. public class test{
  25. public static void main(String[] args){
  26. A b = new B() ;
  27. System.out.println(b.get()) ;
  28. System.out.println(b.getS1()) ;
  29. System.out.println(b.s2) ;
  30. }
  31. }



  32. 结果:
  33. B2
  34. B1
  35. A2

  36. 结论:
  37. 类在向上转型后,private的属性依然是子类的属性,因为private不能直接访问,需要提供对外方法,而方法在向上转型后依然是子类的方法,所以private的属性不会改变而非private的属性在向上转型后都会改变.方法在向上转型后是不会改变的.
  38. 总而言之,向上转型后,直接访问的属性会转型成基类的属性,方法还是子类的方法,通过子类的方法返回的字段值还是子类的值!
复制代码


1 个回复

倒序浏览
子类是继承不到父类的私有属性的,你封装了不就是为了对外屏蔽么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马