Java中的静态绑定与动态绑定的区别,讲明白了
时间:2022-06-18
本文章向大家介绍Java中的静态绑定与动态绑定的区别,讲明白了,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Java中的静态绑定
在静态绑定中,绑定可以在运行时或编译时解析。所有static,final和private方法的绑定过程都在编译时完成。
Java中的动态绑定
在Java中重写可以被认为是动态绑定的最佳示例,因为父类和子类具有相同的方法 - 也就是说,它不决定要调用的方法。
什么是Java中的静态绑定?
static,final和private方法的绑定始终是静态绑定,因为静态绑定提供了更好的性能,并且它们无法被覆盖,因此将始终由某个本地类的对象访问。
以下是静态绑定的示例:
public class NewClass
{
public static class superclass
{
static void print()
{
System.out.println("print in superclass.");
}
}
public static class subclass extends superclass
{
static void print()
{
System.out.println("print in subclass.");
}
}
public static void main(String[] args)
{
superclass A = new superclass();
superclass B = new subclass();
A.print();
B.print();
}
}
输出: 以超类打印。 以超类打印。
在上面的示例中,两种情况都给出了相同的结果:
- 子类和超类的引用是相同的,即单个对象。
- 因为它不能在子类中重写,即超类和编译器,所以它知道并且没有歧义。
什么是Java中的动态绑定?
以下是动态绑定的示例:
public class NewClass
{
public static class superclass
{
void print()
{
System.out.println("print in superclass.");
}
}
public static class subclass extends superclass
{
@Override
void print()
{
System.out.println("print in subclass.");
}
}
public static void main(String[] args)
{
superclass A = new superclass();
superclass B = new subclass();
A.print();
B.print();
}
}
输出: 以超类打印。 在子类中打印。
输出不同,因为:
- 这里的方法不是静态的。
- 在绑定中,编译器不知道必须调用哪个print,因为编译器只是通过引用变量而不是通过对象的类型,并且沿着这些行,绑定将被推迟到运行时,这样将调用print的比较适配鉴于对问题的一种排序。
静态绑定的基本要点。动态绑定
在这里,我们将讨论与Java中的静态和动态绑定相关的一些重要问题:
- 私有,最后和静态个体利用静态权威,而虚拟技术则限制在运行时期间根据运行时对象完成。
- Java中的静态绑定使用官方类型数据,而Java限制中的动态绑定使用对象来确定绑定。
- 使用静态绑定来解决重载方法,同时使用动态绑定(即在运行时)重写方法。
所以,这完全是关于Java中的静态绑定与动态绑定。希望你喜欢我们的解释。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 恕我直言你可能真的不会java第12篇-如何使用Stream API对Map元素排序
- JavaScript错误处理完全指南
- 从头创建您自己的vue.js——第4部分(构建反应性)
- Oracle 数据库-服务器端字符集查看方法
- Pywinauto 应用后端类型选择错误:AttributeError: 'NoneType' object has no attribute 'backend'. 原因及解决办法
- 恕我直言你可能真的不会java第11篇-Stream API终端操作
- Python+selenium 自动化-滚动的使用方法,如何滚动到元素的位置
- 恕我直言你可能真的不会java第10篇-集合元素归约
- Python+selenium 自动化-模拟键盘输入、点击操作,如何查看所支持的全部键位名称
- Uber为什么放弃Postgres选择迁移到MySQL?
- BAT 批处理命令 - 文件批量复制、克隆功能实例演示
- 【35期】谈谈你对Java线程之间通信方式的理解
- mac 技术篇-修改hosts文件,hosts文件位置
- 一行能装逼的 JavaScript 代码
- python 技术篇-时间戳的获取,记录程序处理时间