码迷,mamicode.com
首页 > 编程语言 > 详细

java动态联编

时间:2016-04-10 14:12:14      阅读:733      评论:0      收藏:0      [点我收藏+]

标签:

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

java动态联编

标签:

原文地址:http://www.cnblogs.com/ziq711/p/5373969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!