本帖最后由 刘劲松 于 2013-8-26 08:53 编辑
很简单的一个例子,初学者看看。大神直接飘过~~- import java.lang.*
- public class OverrideDemo
- {
- public static void main(String[] args)
- {
- A2 obj1=new A2();
- obj1.showVar1();
- System.out.println("obj1.var1="+obj1.var1);
- System.out.println("=================");
- obj2.showVar1();
- System.out.println("obj2.var1="+obj2.var1);
- System.out.println("=================");
- A2 obj3=new B2();
- obj3.showVar1();
- System.out.println("obj3.var1="+obj3.var1);
- }
- }
- class A2
- {
- int var1=100;
- protected void showVar1()
- {
- System.out.println("A2定义的showVar1() var1="+var1);
- }
- }
- class B2 extends A2
- {
- double var1=1111.111;
- public void showVar1()
- {
- System.out.println("B2定义的showVar1() var1="+var1);
- }
- }
复制代码 执行结果如下:
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();
这种向上转型的方式,开辟的对象是父类类型的对象。
总结为:成员函数在多态调用时,编译看左边(引用型变量所属类中有调用方法,编译通过,没有,编译失败),运行看右边。
成员变量的话,无论编译,运行都看左边。
|