`

java之动态绑定和静态绑定

    博客分类:
  • Java
阅读更多

如下面代码:

package cn.lifx.test;

public class Test 
{
	public static void whichFoo(Base arg1, Base arg2) 
	{
		arg1.foo(arg2);
	}

	public static void main(String[] args) 
	{
		Base b = new Base();
		Derived d = new Derived();

		whichFoo(b, b);
		whichFoo(b, d);
		whichFoo(d, b);
		whichFoo(d, d);
	}
}

class Base 
{
	public void foo(Base x) 
	{
		System.out.println("Base.Base");
	}

	public void foo(Derived x) 
	{
		System.out.println("Base.Derived");
	}
}

class Derived extends Base 
{
	public void foo(Base x) 
	{
		System.out.println("Derived.Base");
	}

	public void foo(Derived x) 
	{
		System.out.println("Derived.Derived");
	}
}

 

 

输出为:

Base.Base
Base.Base
Derived.Base
Derived.Base

 

 

如下面代码:

package cn.lifx.test;

public class Test 
{
	public static void whichFoo(Base arg1, Base arg2) 
	{
		arg1.foo(arg2);
	}

	public static void main(String[] args) 
	{
		Base b = new Base();
		Base base = new Derived();
		Derived d = new Derived();
		
		base.foo(b);
		base.foo(d);
		d.foo(b);
		d.foo(base);
		
		System.out.println();
		
		whichFoo(b, b);
		whichFoo(b, d);
		whichFoo(d, b);
		whichFoo(d, d);
	}
}

class Base 
{
	public void foo(Base x) 
	{
		if(x instanceof Derived)
		{
			System.out.println("Base.Derived");
		}
		else if(x instanceof Base)
		{
			System.out.println("Base.Base");
		}
	}
}

class Derived extends Base 
{
	public void foo(Base x) 
	{
		if(x instanceof Derived)
		{
			System.out.println("Derived.Derived");
		}
		else if(x instanceof Base)
		{
			System.out.println("Derived.Base");
		}
	}
}

  

输出为:

Derived.Base
Derived.Derived
Derived.Base
Derived.Derived

Base.Base
Base.Derived
Derived.Base
Derived.Derived

 

0
0
分享到:
评论

相关推荐

    Java动态绑定和静态绑定.doc

    详细介绍了java动态绑定和静态绑定的区别

    java动态绑定和静态绑定用法实例详解

    主要介绍了java动态绑定和静态绑定用法,结合实例形式详细分析了java动态绑定与静态绑定相关概念、原理、实现方法及使用注意事项,需要的朋友可以参考下

    Java 静态绑定与动态绑定深入分析

    主要介绍了Java 静态绑定与动态绑定深入分析的相关资料,这里对java 的动态绑定和静态绑定做了详细的介绍,对其进行总结整理,需要的朋友可以参考下

    Java中的静态绑定和动态绑定Java开发Java经验技巧

    Java中的静态绑定和动态绑定Java开发Java经验技巧共8页.pdf.zip

    《剑指offer》Java理解静态绑定与动态绑定.pdf

    理解静态绑定与动态绑定 * Java程序从源文件创建到程序运行要经过两大步骤: * 绑定 * 绑定分类 * 绑定的其他叫法 * 静态绑定 * 识别静态绑定的三个关键字以及各自的...动态绑定和静态绑定的特点 * 静态绑定 * 动态绑定

    Java方法的动态绑定与静态绑定

    对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。  静态绑定:  在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。  针对java简单的可以理解为程序编译期的...

    理解Java中的静态绑定和动态绑定

    主要帮助大家理解Java中的静态绑定和动态绑定,在Java中存在两种绑定方式,一种为静态绑定,另一种就是动态绑定,亦称为后期绑定,感兴趣的小伙伴们可以参考一下

    Java多态中的动态绑定与静态绑定

    Java虚拟机的动态绑定与静态绑定 大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体...

    Java中的静态绑定和动态绑定

     在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定。另一种是动态绑定,亦称为后期绑定。  区别对比  静态绑定发生在编译时期,动态绑定发生在运行时  使用private或static或final修饰的变量或者...

    Java中的静态绑定和动态绑定详细介绍

    主要介绍了Java中的静态绑定和动态绑定详细介绍,在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定,另一种就是动态绑定,亦称为后期绑定,需要的朋友可以参考下

    Java的静态/动态绑定

    对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。  然后我们分别看看两者之间含义以及差别  动态绑定:在运行时根据具体对象的类型进行绑定。若一种语言实现了后期绑定,同时必须提供一些...

    RoboVM和libGDX的绑定[用java调用ios的静态库.a]

    RoboVM和libGDX的绑定[用java调用ios的静态库.a]

    浅谈Java中的重载,重写,多态,静态绑定、动态绑定

    主要介绍了浅谈Java中的重载,重写,多态,静态绑定、动态绑定,具有一定借鉴价值

    Java动态绑定机制的内幕

     静态绑定机制 //被调用的类 package hr.test; class Father{ public static void f1(){ System.out.println("Father— f1()"); } } //调用静态方法 import hr.test.Father; public class StaticCall{ ...

    Java的动态绑定与双分派_动力节点Java学院整理

    主要介绍了Java的动态绑定与双分派,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java-se-concepts:封装,包,静态和动态绑定,抽象类和方法的详细信息

    封装,包,静态和动态绑定,抽象类和方法的详细信息 话题 封装形式 配套 静态和动态绑定 抽象类和方法的详细介绍 1.封装 Encapsulation refers to the bundling (wrapping) of fields and methods inside a single ...

    java绑定 ffmpeg利器:jjmpeg

    jjmpeg 是一个 java 绑定到 ffmpeg 的非常便利的解码和编码库。jjmpeg 具有很高的执行效率,可以运行在不同的平台,而且控制起来也很简单。除了具有 FFmpeg 接口的面向对象的特征之外,jjmpeg 还具有一些较高层次的...

    走进Java语言中的方法绑定.pdf

    对于继承关系复杂的类层次结构,访问对象的实例成员和访问类的静态成员,以及在对象的实例方法或类的静态方法中访问其它静态成员或动态成员时,如果不搞清楚静态绑定和动态绑定的规律,往往容易出现意想不到的结果,...

    JAVA反射机制的简单理解

    有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。我们朗朗上口动态绑定(dynamic binding)、动态链接(dynamic linking)、动态加载(dynamic loading)等。然而“动态”一...

Global site tag (gtag.js) - Google Analytics