zoukankan      html  css  js  c++  java
  • Java代码执行顺序及多态体现

    /**
     * Description:
     * 基类的引用变量可以只想基类的实例对象也可指向其子类的事来对象
     * 接口的引用变量也可以指向实现类的实例对象
     * 程序调用的方法在运行期才动态绑定
     * 绑定指将一个对象调用和一个方法主体连接到一起,就是引用变量所指向的具体实例对象的方法,就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法
     * 这种动态绑定实现了多态。只有方法有多条的概念
     */
    public class Test {
        /**
         * 首先new Sub()的时候会首先调用Base的构造方法。
         * 在Base的构造方法中会调用print方法,按照上述多态的特性
         * 此时实例化的是Sub类的对象,所以实际会调用Sub类中的print方法。
         * 此时Sub类中的非静态变量 int num = 3; 尚未执行,所以输出 Sub.num=0;
         * 然后父类把在构造器中把num赋值为2
         * 然后调用子类的构造方法
         * 由初始化顺序:Sub中的非静态变量num初始化为3
         * 然后调用子类的print方法输出Son.num=3
         * 接着输出b.num
         * 而属性是没有多态概念的, 所以会输出2
         * @param args
         */
        public static void main(String[] args) {
            Base b = new Sub();
            System.out.println(b.num);
        }
    }
    
    class Base {
        int num = 1;
        public Base() {
            this.print();
            num = 2;
        }
        public void print() {
            System.out.println("Base.num = " + num);
        }
    
    }
    
    class Sub extends Base {
        int num = 3;
        public Sub() {
            this.print();
            num = 4;
        }
        public void print() {
            System.out.println("Sub.num = " + num);
        }
    }
  • 相关阅读:
    ServletConfig对象
    Servlet生命周期
    BeanListHandler
    表单校验
    SQL30081N 检测到通信错误。正在使用的通信协议:"TCP/IP"
    交货单寄售发货接口
    PI 7.4/7.5 Alert 配置
    SAP PI soap 方式 头部 传输 wsse:Security wsse:UsernameToken
    smartforms 打印参数 ( 预览 和 不预览直接打印 )设置
    migo增强中获取屏幕值的方法
  • 原文地址:https://www.cnblogs.com/caicz/p/10844959.html
Copyright © 2011-2022 走看看