黑马程序员技术交流社区

标题: 关于Override的一个小例子 [打印本页]

作者: 刘劲松    时间: 2013-8-12 11:26
标题: 关于Override的一个小例子
本帖最后由 刘劲松 于 2013-8-26 08:53 编辑

很简单的一个例子,初学者看看。大神直接飘过~~
  1. import java.lang.*
  2. public class OverrideDemo
  3. {
  4. public static void main(String[] args)
  5. {
  6. A2 obj1=new A2();
  7. obj1.showVar1();
  8. System.out.println("obj1.var1="+obj1.var1);
  9. System.out.println("=================");
  10. obj2.showVar1();
  11. System.out.println("obj2.var1="+obj2.var1);
  12. System.out.println("=================");
  13. A2 obj3=new B2();
  14. obj3.showVar1();
  15. System.out.println("obj3.var1="+obj3.var1);
  16. }
  17. }
  18. class A2
  19. {
  20. int var1=100;
  21. protected void showVar1()
  22. {
  23. System.out.println("A2定义的showVar1() var1="+var1);
  24. }
  25. }

  26. class B2 extends A2
  27. {
  28. double var1=1111.111;
  29. public void showVar1()
  30. {
  31. System.out.println("B2定义的showVar1() var1="+var1);
  32. }
  33. }
复制代码
执行结果如下:
A2定义的showVar1() var1=100
obj1.var1=100
=================
B2定义的showVar1() var1=1111.111
obj2.var1=1111.111
=================
B2定义的showVar1() var1=1111.111
obj3.var1=100   

----------------------------------------------------------------------------
很简单的一个例子,多态中重载的不同,记住成员变量和成员函数重载的不同规则。理解也很容易,
A2 obj3=new B2();
obj3.showVar1();

这种向上转型的方式,开辟的对象是父类类型的对象。
总结为:成员函数在多态调用时,编译看左边(引用型变量所属类中有调用方法,编译通过,没有,编译失败),运行看右边。
成员变量的话,无论编译,运行都看左边。







作者: 许庭洲    时间: 2013-9-25 08:11
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2