首页 > 编程语言 >Java静态绑定和动态绑定

Java静态绑定和动态绑定

时间:2023-02-04 21:44:57浏览次数:40  
标签:Java 静态 void 绑定 Dog Animal 类型

将方法调用连接到方法体称为绑定。

在java中有两种类型的绑定:

  • 静态绑定(也称为早期绑定)。
  • 动态绑定(也称为后期绑定)。

了解类型

下面让我们来了解实例的类型。

1. 变量有一个类型

每个变量都有一个类型,它可能是原始的和非原始的。

int data=30;
Java

这里的数据变量是一个int类型。

2. 引用有一个类型

class Dog {
    public static void main(String args[]) {
        Dog d1;// Here d1 is a type of Dog
    }
}
Java

2. 对象有一个类型

对象是特定的java类的实例,但它也是其超类的实例。

class Animal {
}

class Dog extends Animal {
    public static void main(String args[]) {
        Dog d1 = new Dog();
    }
}
Java

这里d1Dog类的一个实例,但它也是Animal的一个实例。

静态绑定

当编译时(由编译器)确定对象的类型时,它被称为静态绑定。如果在类中有任何privatefinalstatic方法,则有静态绑定。

静态绑定的示例

class Dog {
    private void eat() {
        System.out.println("dog is eating...");
    }

    public static void main(String args[]) {
        Dog d1 = new Dog();
        d1.eat();
    }
}
Java

动态绑定

当在运行时确定对象的类型时,它被称为动态绑定。

动态绑定的示例

class Animal {
    void eat() {
        System.out.println("animal is eating...");
    }
}

class Dog extends Animal {
    void eat() {
        System.out.println("dog is eating...");
    }

    public static void main(String args[]) {
        Animal a = new Dog();
        a.eat();
    }
}
Java

执行上面示例代码输出结果如下 -

dog is eating...
Shell

在上面的例子中,对象类型不能由编译器决定,因为Dog的实例也是Animal的一个实例。编译器不知道它的类型,只知道它的基类型。

//更多请阅读:https://www.yiibai.com/java/static-binding-and-dynamic-binding.html#article-start

标签:Java,静态,void,绑定,Dog,Animal,类型
From: https://www.cnblogs.com/cnetsa/p/17092470.html

相关文章

  • Android集成mupdf,实现手写笔签字,手指翻页的java代码
    importandroid.graphics.Bitmap;importandroid.graphics.Color;importandroid.graphics.RectF;importandroid.util.Log;importjava.util.LinkedList;importc......
  • Java多态
    Java中的多态是一个概念,通过它我们可以通过不同的方式执行单个动作(方法)。多态性派生自2个希腊词:“poly”和“morphs”。词语“poly”意为许多,“morphs”意为形式。所......
  • Java final关键字
    java中的final关键字用于限制用户修改变量或重写一个类或方法。javafinal关键字可以在许多上下文中使用。final可以是:变量方法类final关键字可以应用于变量,没有......
  • Java 多线程学习
    Java多线程学习Thread类学习首先使类继承Thread然后创建run方法其中在线程中run主要是线程执行体在线程中new这个类然后使用start进行线程打开注:线程中是同......
  • java 反射
    1、什么是发射?反射机制指的是程序运行时能够获取自身的信息,在java中,只要给定类的名字,就可以通过反射机制来获得类的所有属性和方法。2、在JVM运行时期可以做什么?......
  • Java lamdba表达式
    JavaLambda表达式函数式接口任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口publicinterfaceRunnable{ publicabstractvoidrun();}推导方法:......
  • java基础:流程控制
    顺序结构Java的执行过程就是顺序结构,除非说明,不然都是一句接一句执行。选择结构if选择结构if(布尔表达式1){//布尔表达式1为true执行}elseif(布尔表达式2){......
  • 基础知识-java程序运行机制
    编译型-compile(直译)操作系统适用,c/c++解释型-网页(对速度要求不高)Java(双重属性)、Javascriptjava运行机制源程序(.java文件)——java编译器——字节码(.class文件)——类装......
  • Java多线程并发04—线程池的合理使用
    为什么使用线程池?线程池做的工作主要是控制运行的线程的数量。线程池的种类Java中常用的线程池主要有四种:newCachedThreadPool、newFixedThreadPool、newScheduledThreadPo......
  • Java多线程并发05-锁说明
    根据锁的各种特性,可将锁分为以下几类:乐观锁/悲观锁独享锁(互斥锁)/共享锁(读写锁)可重入锁公平锁/非公平锁分段锁偏向锁/轻量级锁/重量级锁自旋锁乐观锁/悲观锁乐观锁与悲观锁并......