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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ZYZQ 于 2015-5-24 03:34 编辑
  1. class A{
  2.         public void fun1(){
  3.                 System.out.println("A-->public void fun1()");
  4.         }
  5.         public void fun2(){
  6.                 fun1();
  7.                 System.out.println("this is "+this);
  8.         }
  9. }

  10. class B extends A{
  11.         public void fun1(){
  12.                 System.out.println("B-->public void fun1()");
  13.         }
  14.         public void fun3(){
  15.                 System.out.println("B-->public void fun3()");
  16.         }
  17.         public void fun4(){
  18.                 this.fun1();
  19.                 System.out.println("this is "+this);
  20.         }
  21. }

  22. public class Demo{
  23.         public static void main(String[] args){
  24.                 A a = new B();//多态
  25.                 B b = (B)a;//强转
  26.                 A aa = new A();
  27.                 B bb = new B();
  28.                
  29.                 System.out.println("a is "+a);
  30.                 System.out.println("b is "+b);
  31.                 System.out.println("aa is "+aa);
  32.                
  33.                 b.fun1();
  34.                 b.fun2();
  35.                 b.fun3();
  36.                 b.fun4();
  37.                
  38.                 a.fun2();
  39.                
  40.                 aa.fun2();
  41.                
  42.                 bb.fun2();
  43.                 bb.fun1();
  44.                 bb.fun4();
  45.         }
  46. }
  47. /**
  48. 1.当A类中fun1函数权限为private(覆写失败)时,输出结果为:
  49. ----------------------------------------------------
  50. a is B@15db9742
  51. b is B@15db9742
  52. aa is A@6d06d69c
  53. B-->public void fun1()
  54. A-->public void fun1()
  55. this is B@15db9742
  56. B-->public void fun3()
  57. B-->public void fun1()
  58. this is B@15db9742
  59. A-->public void fun1()
  60. this is B@15db9742
  61. A-->public void fun1()
  62. this is A@6d06d69c
  63. A-->public void fun1()
  64. this is B@7852e922
  65. B-->public void fun1()
  66. B-->public void fun1()
  67. this is B@7852e922
  68. ----------------------------------------------------
  69. 2.当A类中fun1函数权限为public(覆写成功)时,输出结果为:
  70. a is B@15db9742
  71. b is B@15db9742
  72. aa is A@6d06d69c
  73. B-->public void fun1()
  74. B-->public void fun1()
  75. this is B@15db9742
  76. B-->public void fun3()
  77. B-->public void fun1()
  78. this is B@15db9742
  79. B-->public void fun1()
  80. this is B@15db9742
  81. A-->public void fun1()
  82. this is A@6d06d69c
  83. B-->public void fun1()
  84. this is B@7852e922
  85. B-->public void fun1()
  86. B-->public void fun1()
  87. this is B@7852e922
  88. */
复制代码
当A类中fun1()权限为private或public时,b.fun2()的输出结果是不同的,求教内存中是如何变化带来的这种差异?


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马