Java学习之动态绑定机制

news2024/11/16 19:30:30

目录

举例说明

父类

子类

main类

运行结果

​编辑

 动态绑定

举例说明

父类

子类

main类

分析

运行结果


Java重要特性:动态绑定机制(非常重要

举例说明

父类

class A {//父类
    public int i = 10;

    public int sum() {
        return getI() + 10;
    }

    public int sum1() {
        return i + 10;
    }

    public int getI() {
        return i;
    }
}

子类

class B extends A {//父类
    public int i = 20;

    public int sum() {
        return i + 20;
    }

    public int getI() {
        return i;
    }
    public int sum1() {
        return i + 10;
    }

}

main类

public class DynamicBinding {
    public static void main(String[] args) {
        //向上转型,编译类型是A,运行类型是B
        A a = new B();
        //从子类-B类中开始查找
        System.out.println(a.sum());//20+20
        System.out.println(a.sum1());//20+10
    }
}

运行结果

 动态绑定

1、当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定

我的理解:调用方法的时候,会看这个对象的运行类型,运行类型是那个类就从哪个类开始查找,无论外面套几层方法,都是这个规则

2、当调用对象属性时,没有动态绑定机制,哪里声明,那里使用

举例说明

父类

class A {//父类
    public int i = 10;

    public int sum() {
        return getI() + 10;
    }

    public int sum1() {
        return i + 10;
    }

    public int getI() {
        return i;
    }
}

子类

class B extends A {//父类
    public int i = 20;

    public int getI() {
        return i;
    }
}

main类

package com.hspedu.poly_.dynamic_;

public class DynamicBinding {
    public static void main(String[] args) {
        //向上转型,编译类型是A,运行类型是B
        A a = new B();
        //从子类-B类中开始查找
        System.out.println(a.sum());//30
        System.out.println(a.sum1());//20
    }
}

分析

a.sum():因为运行类型是B类,所以仍然从B类开始查找,但是B类没有sum()这个方法,所以到B类的父类-A类中查找,找到了并且可以调用

public int sum() {
        return getI() + 10;
    }
此时需要调用getI()方法,因为动态绑定机制的第一条规则对象a的运行类型是B类,还是会从子类-B类中开始查找,B类有这个方法并调用,返回一个i,这个i是一个属性,根据第二条规则,哪里声明,哪里使用,返回的是B类的属性i的值,即20;然后在A类的sum()方法返回一个20+10,输出30

a.sum1():规则同上条,调用A类中的sum1()方法,return i + 10;(i是A类中的10),输出20

运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年11月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2022年11月国产数据库大事件和重要产品发布消息。 文章目录11月国产数据库大事记(时间线)产品/版本发布兼容认证排行榜新增数据库11月国产数据库大事记(时间线) 11月1日,国际知名研究机构 IDC …

什么是内存对齐

内存对齐 什么是内存对齐为什么要内存对齐内存对齐的规则结构体中内存对齐 sizeof无嵌套有嵌套 iOS中对象内存对齐 iOS中获取内存大小方式 class_getInstanceSize()malloc_size() iOS中内存对齐 实际占用内存对齐方式系统分配内存对齐方式问题 内存优化 总结 内存对齐 什么…

基于C++的AGV机器人无线控制

1 AGV系统概述 1.1AGV原理 AGV行走控制系统由控制面板、导向传感器、方向电位器、状态指示灯、避障传感器、光电控制信号传感器、驱动单元、导引磁条、电源组成。 AGV的导引(Guidance)是指根据AGV导向传感器(Navigation)所得到…

基于FFmpeg进行rtsp推流及拉流(详细教程)

目录 1.1 Windows系统 1.2 Ubuntu 和 Debian 系统 1.3 CentOS 和 Fedora 系统 1.4 macOS系统 2. 安装rtsp-simple-server 3. FFmpeg推流 3.1 UDP推流 3.2 TCP推流 3.3 循环推流 4 拉流 4.1 ffplay/VLC拉流显示 4.2 FFmpeg拉流保存成视频 1. 安装FFmpeg FFmpeg 是一…

tftp服务/nfs服务/二进制工具集/uboot基础

一、什么是系统移植 1)系统移植就是给开发板搭建一个linux操作系统 2)从官方获取源码,进行配置和编译,生成板子需要的镜像文件 二、为什么系统移植 1)为后面学习驱动开发课程打基础 2)驱动开发工程师必…

入行4年,跳槽2次,在软件测试这一行我已经悟了!

近年来,软件测试行业如火如荼。互联网及许多传统公司对于软件测试人员的需求缺口逐年增大。然而,20年的疫情导致大规模裁员,让人觉得行业寒冬已经到来。软件测试人员的职业规划值得我们深思。 大家对软件测试行业比较看好,只是因…

【云服务器 ECS 实战】专有网络 VPC、弹性网卡的概述与配置

一、ECS 专有网络 VPC1. 传统经典网络与专有网络 VPC 对比2. 建立自己的专有网络 VPC二、弹性网卡1. 弹性网卡的概念与优势2. 弹性网卡的配置一、ECS 专有网络 VPC 阿里云在早期使用的是一种传统的网络模式,将所有的 ECS 云服务直接建立在传统网络层之上&#xff0…

【有营养的算法笔记】归并排序

👑作者主页:进击的安度因 🏠学习社区:进击的安度因(个人社区) 📖专栏链接:有营养的算法笔记 文章目录一、思路二、模板讲解三、模板测试四、加练 —— 逆序对的数量今天讲解的内容是…

[附源码]Python计算机毕业设计SSM加油站管理信息系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【论文笔记】InverseForm: A Loss Function for Structured Boundary-Aware Segmentation

论文 标题:InverseForm: A Loss Function for Structured Boundary-Aware Segmentation 收录于:CVPR 2021 论文:[2104.02745] InverseForm: A Loss Function for Structured Boundary-Aware Segmentation (arxiv.org) 代码:Git…

大数据都应用在哪些领域?

大数据被应用较多的领域有哪些?疫情期间大数据技术对于疫情的防控发挥了巨大的作用,抗疫期间多家互联网企业纷纷加强大数据在疫情防控中的应用。小到社区大到部委相关部门都将大数据作为不可或缺的防疫工具,生活中很多方面涉及到大数据由此可…

Scala014--Scala中的函数

一,函数的定义和声明 对于其他计算机语言来说,如Java,python,函数和方法是一样的,但是对于Scala来说,函数和方法并不是同一个概念,方法是类或者是对象的成员,而函数是一个对象。但是…

澳亚集团通过聆讯:毛利率波动,预计利润将下滑,陈荣南为董事长

撰稿|汤汤 来源|贝多财经 近日,港交所披露的信息显示,澳亚集团有限公司(下称“澳亚集团”)通过港交所聆讯,并披露了聆讯后资料集(即招股书),中金公司和星展银行(DBS&am…

如何从 Power BI 示例中获取数据以供练习

如果您是 Power BI 初学者, Microsoft Power BI 教程中提供的示例是入门的好地方。 在这篇文章中,我将按照步骤在 excel 中查看示例数据,以便您可以将这些数据用于练习目的。 下载 Excel 文件 首先,在浏览器中打开人力资源数据。文包含有关如何使用数据构建 Power BI 报…

不是我穷,是他真的很好用!

今天猫猫为您推荐一款良心vx小程序——喵盐配音!利用小程序的特性,无需安装,即走即用。 这个配音软件超多功能,太强大了!操作简单,输入文本,一键配音,小白也会用超多声音主播&#…

12月8日绿健简报,星期四,农历十一月十五

12月8日绿健简报,星期四,农历十一月十五1. 中国铁路:即日起购票乘车及进出站停止查验核酸和健康码;联防联控机制:不再对跨地区流动人员查验健康码,无症状和轻型病例一般采取居家隔离。2. 包头:交…

torchnet 简单使用文档

torchnet 是用于 torch 的代码复用和模块化编程的框架: 主要包含4个部分: Dataset:各种不同方式处理数据。Engine:各种机器学习算法Meter:性能度量指标。 Log:Log:Log: 模块详细分为如下部分:D…

FLStudio2023电脑版安装下载及fl21版本新功能介绍

FL Studio水果简称FL,全称:Fruity Loops Studio,国人习惯叫它"水果"。软件现有版本是 FL Studio 21,已全面升级支持简体中文语言界面 。FL Studio 能让你的计算机就像是全功能的录音室一样,完成编曲、剪辑、…

YourKit Profiler for .NET功能和内存一体探查器

YourKit Profiler for .NET功能和内存一体探查器 Windows和Linux的简单易用内存和性能.NET探查器。 功能和内存一体的.NET探查器 远程和本地评测各种.NET Center和.NET设计应用程序、服务器和Windows服务。 探索测试、开发和制造环境中的性能问题。 与Visual Studio和JetBrains…

一键式开启:IDaaS 日志接入 SLS日志审计发布

背景 什么是IDaaS 应用身份服务IDaaS(Identity as a Service)是阿里云原生身份管理系统,可以统一管理各应用中分散的账号,并集中分配应用访问控制权限,降低低效、重复的账号访问配置和运维工作。IDaaS 旗下的EIAM(Enterprise IA…