- ------<a target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
复制代码 这是我对运行结果的一些简单理解,望大家能给出更详细的解答。- package com.itheima;
- /**7、 分析运行结果,说明原理。
- * 答:主函数中,b.fun1()运行结果是456,因为是B类引用建立了B类的对象,B类继承了A类的fun1()方法,并覆写了父类的fun2()方法,
- * 所以b.fun1()调用的是子类的fun2()方法。运行结果是456。
- * a.fun1()运行结果是456,因为B b = new B(),将b赋值给A a时,即相当于A a = new B()。这是一个多态,父类引用指向子类对象。
- * 在多态中的规律是,运行的方法都是运行子类的方法。
- * 所以a.fun1()调用的是子类的fun2()方法,运行结果是456
- * @author liwensi
- * */
- public class Test7 {
- public static void main(String[] args) {
- B.main(null);
- }
- }
- class A {
- void fun1() {
- System.out.println(fun2());
- }
- int fun2() {
- return 123;
- }
- }
- class B extends A {
- int fun2() {
- return 456;
- }
- public static void main(String args[]) {
- B b = new B();
- b.fun1();
- A a = b;
- a.fun1();
- }
- }
复制代码
|
|