`
zhangyuanjava
  • 浏览: 129584 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

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");  
    }  


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");
}
}



输出为:

Java代码
Base.Base  
Base.Base  
Derived.Base  
Derived.Base 

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




如下面代码:

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();  
        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");  
        }  
    }  


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");
}
}


输出为:

Java代码
Derived.Base  
Derived.Derived  
Derived.Base  
Derived.Derived  
 
Base.Base  
Base.Derived  
Derived.Base  
Derived.Derived 
分享到:
评论

相关推荐

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

    在Java编程语言中,动态绑定和静态绑定是两个重要的概念,它们涉及到方法调用和多态性。了解这两个概念对于深入理解面向对象编程至关重要。本文将详细探讨它们的区别,并通过实例来阐述它们的工作原理。 首先,让...

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

    在Java编程语言中,静态绑定和动态绑定是两个至关重要的概念,它们关乎程序的执行效率和灵活性。了解这两个概念对于提升Java开发技能至关重要。 首先,我们来解释一下静态绑定(也称为早期绑定)。静态绑定主要涉及...

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

    "Java动态绑定和静态绑定用法实例详解" Java中的绑定机制是指将一个方法的调用与方法所在的类(方法主体)关联起来。Java中存在两种类型的绑定机制:静态绑定和动态绑定。 静态绑定是指在程序执行以前已经被绑定...

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

    在Java编程语言中,静态绑定和动态绑定是两种不同的方法调用机制,它们与面向对象编程密切相关。这两种绑定方式决定了程序在运行时如何选择和执行特定的方法。 静态绑定(早期绑定),也称为编译时绑定,是指在程序...

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

    Java中的静态绑定与动态绑定是面向对象编程中的关键概念,它们决定了方法调用的方式和时机。静态绑定(也称为早期绑定或编译时绑定)和动态绑定(也称为晚期绑定或运行时绑定)是Java中多态性实现的基石。 **静态...

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

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

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

    Java中的静态绑定与动态绑定是面向对象编程中的两个核心概念,它们关系到程序的编译与运行时行为。理解这两个概念对于写出高效、灵活的代码至关重要。 首先,静态绑定(也称为前期绑定或编译时绑定)是指在编译期间...

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

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

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

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

    访问者模式商量篇:java的动态绑定与双分派_.docx

    在Java编程中,动态绑定和静态绑定是两种不同的方法调用机制,它们分别适用于不同的场景。动态绑定,也称为晚期绑定或多态性,是指在程序运行时根据对象的实际类型来决定调用哪个方法。静态绑定,又称为早期绑定,是...

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

    Java中的静态绑定和动态绑定是面向对象编程中的关键概念,它们决定了程序在运行时如何解析方法调用和访问成员变量。 静态绑定,也称为早期绑定,是指在编译期间就已经确定了方法调用的具体实现。这通常发生在方法的...

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

    总结起来,通过RoboVM和libGDX的绑定,开发者能够在Java环境中调用iOS的静态库,实现了跨平台开发的无缝对接。这极大地扩展了libGDX的应用场景,并降低了开发iOS应用的学习曲线,尤其是在已有Java代码基础的情况下。...

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

    理解动态绑定、静态绑定和双分派的概念对于深入掌握Java的面向对象编程至关重要。它们不仅影响代码的可读性、可维护性,还关系到性能和设计模式的运用。在实际开发中,合理利用这些特性可以编写出更加灵活和高效的...

    Java多态中动态绑定原理解析

    静态绑定可以使用private、static和final修饰的方法或构造器来实现。例如,private void method(){}或static void method(){}等。 动态绑定是在运行时根据对象的运行时类型进行绑定的过程。它是Java中除静态绑定的...

    RabbitMQ工具类实现配置文件动态创建队列和绑定

    本篇文章将重点讲解如何使用RabbitMQ结合Java实现一个工具类,动态地根据配置文件创建队列和绑定。 首先,我们需要了解RabbitMQ的基本概念。在RabbitMQ中,队列(Queue)是存储消息的地方,生产者(Producer)发送...

    Java动态绑定的方法重载的实现.zip

    Java动态绑定和方法重载是面向对象编程中的两个核心概念,它们在Java程序设计中扮演着重要角色。这里我们将深入探讨这两个概念以及它们在实际应用中的实现。 首先,让我们了解什么是方法重载(Method Overloading)...

    Java的静态/动态绑定

    总结来说,静态绑定和动态绑定都是Java多态性的重要组成部分。静态绑定在编译时确定,适用于方法重载;动态绑定在运行时确定,适用于方法重写。理解这两种绑定机制有助于我们更好地设计和实现面向对象的程序,充分...

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

    Java中的重载、重写、多态、静态绑定和动态绑定的知识点总结 Java 中的重载(Overload)是一种机制,允许在同一个类中定义多个具有相同名称的方法,这些方法的参数个数、参数类型和顺序不能相同。返回类型可以相同...

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

    在Java中,方法绑定分为两种类型:静态绑定(Static Binding)和动态绑定(Dynamic Binding)。 1. 静态绑定(Static Binding) 静态绑定又称为早期绑定,它发生在编译阶段。编译器根据引用类型的定义来决定调用...

Global site tag (gtag.js) - Google Analytics