• 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、对于静态方法,因为在编译时就决定了它的执行顺序,所以程序运行时执行强制转换后对象的静态方法。

  • 相关阅读:
    varnish缓存清理
    How to change default root@ email address linux / postfix / centos?
    crontab每小时运行一次
    awk 统计文件中按照某列统计某列的和(sum)
    Linux下查看压缩文件内容的 10 种方法
    python 脚本定时删除 elk索引
    python 如何让字符串的不具有转义的反斜杠具有转义功能
    Linux安装redis和部署
    redis requires Ruby version >= 2.2.2问题
    Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
  • 原文地址:https://www.cnblogs.com/ziq711/p/5373969.html
Copyright © 2020-2023  润新知