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

时间: 2024-10-09 21:53:27

java动态联编的相关文章

c++知识点总结--静态与动态联编

静态联编是指在编译阶段就将函数实现和函数调用关联起来,因此静态联编也叫早绑定,在编译阶段就必须了解所有的函数或模块执行所需要检测的信息,它对函数的选择是基于指向对象的指针(或者引用)的类型 动态联编是指在程序执行的时候才将函数实现和函数调用关联,因此也叫运行时绑定或者晚绑定,动态联编对函数的选择不是基于指针或者引用,而是基于对象类型,不同的对象类型将做出不同的编译结果.C++中一般情况下联编也是静态联编,但是一旦涉及到多态和虚拟函数就必须要使用动态联编了. 类与类指针 父类指针引用父类对象,完全

静态联编和动态联编初认识。

多态性: 静态联编多态性(编译时的多态性)通过函数,运算符的重载实现的(系统根据形参的个数来实现编译的多态性) 动态联编多态性(运行时的多态性)通过继承,虚函数(当运行时才能实现对象与函数的联编)C++规定:动态联编是在虚函数的支持下实现的 条件:指向派生类对象的基类指针或者引用派生类对象的基类引用(调用虚函数) 动态联编: 1 #include <iostream> 2 using namespace std; 3 class shape{ 4 public: 5 void virtual

静态联编和动态联编

1.联编是指对于相同名字的若干个函数的选择问题 2.实例 #include <iostream> using namespace std; const double PI = 3.1415926; class Point { private: double x,y; public: Point(double i,double j) { x = i; y = j; } double Area() { return 0; } }; class Rectangle:public Point//矩形类

C++ 虚函数、静态联编和动态联编、抽象类

 //C++ 虚函数.静态联编和动态联编.抽象类 #include<iostream> #include<string> using namespace std; class People { private: string name; int age; public: People(string name_, int age_):name(name_), age(age_){} People(){cout << "基类默认构造函数" <&

C++之静态联编和动态联编

联编是指一个程序自身彼此关联的一个过程.按照联编所进行的阶段不同,可分为静态联编和动态联编两种. 静态联编 静态联编是指在程序编译连接阶段进行联编.这种联编又称为早期联编,这是因为这种联编工作是在程序运行之前完成的. 编译时所进行的联编又称为静态束定.束定是指确定所调用的函数与执行该函数代码之间的关系. 下面来看一个静态联编的程序例题: <span style="font-size:18px;">#include <iostream> using namespa

【转】C++多态篇1一静态联编,动态联编、虚函数与虚函数表vtable

首先,说起多态就必须要讲静态联编,动态联编.这俩也叫静态绑定和动态绑定.有些书比如C++ Primer也叫静态类型和动态类型.谭浩强写的C++程序设计直接叫静态多态性和动态多态性. 文章转载自:原文链接

静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #include<iostream> void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void

【CPP-NOTE】动态联编

多态中动态联编特性 联编是指一个计算机程序的不同部分彼此关联的过程.按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编. 源代码中的函数调用解释为执行特定的函数代码被称为函数名联编(binding). 在编译过程中进行联编被称为静态联编(static binding),又称早期联编(early binding).  编译器必须生成能够在程序运行时选择正确的虚方法的代码,这被称为动态联编(dynamic binding), 又称为晚期联编(late binding).     

C++的静态联编和动态联编

联编的概念 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系. 意思就是这个函数的实现有多种,联编就是把调用和对应的实现进行映射的操作.按照联编进行的阶段不同,可分为静态联编和动态联编. 静态联编 静态联编工作是在程序编译连接阶段进行的,这种联编又称为早期联编,因为这种联编实在程序开始运行之前完成的.在程序编译阶段进行的这种联编在编译时就解决了程序的操作调用与执行该操作代码间的关系. 动态联编 编译程序在编