先看看类的注释,再看main方法,能明白不
- class Test
- {
- public static void main(String[] args)
- {
- B b = new B();
- //B对象没有复写fun1方法,调用继承自父类A的fun1方法
- //fun1调用了fun2,自然调用B自己复写过的fun2
- b.fun1();
-
- //这里是多态,a变量内存里装的的还是B对象实例b的引用
- A a = b;
- a.fun1();
- //你可以试试这个,看看是不是true
- System.out.println((a==b));
- }
- }
- class A
- {
- void fun1()
- {
- System.out.println(fun2());
- }
- int fun2()
- {
- return 123;
- }
- }
- class B extends A
- {
- //B是A的子类,B中复写了父类A的fun2方法
- //所以建立B的对象时,调用的是自己的fun2方法
- int fun2()
- {
- return 456;
- }
- //B没有复写A的fun1,相当于B类中隐藏有下面的方法。
- void fun1()
- {
- super.fun1();
- }
- }
复制代码
|