zoukankan      html  css  js  c++  java
  • java动态联编

    JAVA中联编有两种,一种是动态联编,一种是静态联编。

             动态联编:也叫多态联编或者是迟后联编,因为到底要调用哪一个函数,在编译时不能确定,而要推迟到运行中确定。也就是说,要等到程序运行时,确定了指针所指向对象的类型时,才能够确定。

            静态联编:静态联编是指联编工作出现在编译连接阶段,这种联编又称作早期联编,因为这种联编工作是程序开始运行之前完成的。

            静态联编的条件:类方法(静态方法),类变量(静态类型变量)。

            EXM:

            public class Par_Test{  //基类

                      public static int i=4;

                      public Par_test(){   //构造函数

                              System.out.println(" Par_Test initialzed ");

                       }

                       public void write(){  //动态联编

                              System.out.println(" Par_Test write  "+i);  

                       }

                       public static void writeStatic(){  //静态方法测试  静态联编

                              System.out.println(" Par_Test writeStatic  "+i);

                        }

                      

             }

            public class Chi_Test extends Par_Test{  //子类

                       public static int i=5;

                       public Chi_Test(){ //构造函数

                                System.out.println(" Chi_Test initialized ");

                        }

                        public void write(){  //动态联编

                                 System.out.println(" Chi_Test write  "+i);

                        }

                       public static void writeStatic(){  //静态方法测试 静态联编

                                System.out.println(" Chi_Test writeStatic "+i);

                       }

             }

             public class Test{

                    public static void main(String[] pars){

                             Pra_Test test = new Chi_Test(); //测试初始化构造函数顺序

                             test.write();   //测试动态联编

                             test.writeStatic();   //  测试静态联编

                    }

              }

            程序执行结果:

            Par_Test initialized;

            Chi_Test initialized;

            Chi_Test write 5;

            Par_Test writeStatic 4;

            由程序运行结果可以看出:

            1、在构造一个子类对象时,先调用其父类的构造函数,再执行本类构造函数。

            2、对于一般的方法即使把子对象强制转换成父类对象,程序运行时执行子类中的方法。

            3、对于静态方法,因为在编译时就决定了它的执行顺序,所以程序运行时执行强制转换后对象的静态方法。

  • 相关阅读:
    网站如何做分布式(集群)的大纲
    [转]Bind和Eval的区别详解
    SQL 中游标的并发问题。
    如何利用客户端缓存对网站进行优化?
    Windows的第五种群集方案 CCS
    ICollection 接口的类序列化的问题。
    如何提高网页的效率(上篇)——提高网页效率的14条准则
    石油地质名称解释
    【SQL基础概念】
    DataView/DataRowView
  • 原文地址:https://www.cnblogs.com/ziq711/p/5373969.html
Copyright © 2011-2022 走看看