【精选】java继承进阶,子类继承父类(内存图、内存分析工具)

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

前言

一、内存图

1、构造方法 继承(不管什么修饰符,子类都不能继承)

2、成员变量 继承(子类都可以继承)

继承的内存图:

3、成员方法 继承(虚方法表中可以继承)

内存分析工具


前言

  • 误区1:父类私有的东西,子类就无法继承
  • 误区2:父类中非私有成员,就被子类继承下来了

一、内存图

private 表示私有
public 表示非私有

1、构造方法 继承(不管什么修饰符,子类都不能继承)

下面代码中,创建的Z2对象,就会因为没有继承父类,产生报错

package demon1;public class Test {public static void main(String[] args) {//利用空参构造创建子类对象Zi z1 = new Zi();//利用带参构造创建子类对象//Zi z2 = new Zi("zhangsan",23);}
}class Fu{String name;int age;public Fu(){}public Fu(String name,int age){this.name = name;this.age = age;}
}class Zi extends Fu{//如果一个类中没有构造方法,虚拟机会自动的给你添加一个默认的空参构造}

2、成员变量 继承(子类都可以继承)

继承的内存图:
  • name和age因为被private修饰,所以不能被子类直接调用

3、成员方法 继承(虚方法表中可以继承)

  • 只有父类中的虚方法才能被子类继承

  • fushow2是private修饰的,所以不能传到z1中的虚方法表中

内存分析工具

import java.io.IOException;public class Test {public static void main(String[] args) throws IOException {/* Zi z = new Zi();z.fuShow1();*///把对象的地址值z以16进制的形式打在控制台上//System.out.println(Long.toHexString(VM.current().addressOf(z)));//因为内存分析工具需要程序不停止// Scanner sc = new Scanner(System.in);//sc.next();}
}class Fu {private int a = 0x111;int b = 0x222;public  void fuShow1() {System.out.println("public --- FuShow");}private void fuShow2() {System.out.println("private --- FuShow");}
}class Zi extends Fu {int c = 0x333;public void ziShow() {System.out.println("public --- ZiShow");}
}
  • jdk自带

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

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

相关文章

ftrace工具学习笔记

ftrace是一个功能强大的Linux内核跟踪工具,可用于分析内核的行为和性能问题。它可以用来收集各种内核跟踪数据,如函数调用、内存分配、中断处理等。以下是ftrace的一些主要特点和用法: ftrace是内核自带的跟踪工具,因此无需安装。…

FRP内网穿透如何避免SSH暴力破解(二)——指定地区允许访问

背景 上篇文章说到,出现了试图反复通过FRP的隧道,建立外网端口到内网服务器TCP链路的机器人,同时试图暴力破解ssh。这些连接造成了流量的浪费和不必要的通信开销。考虑到服务器使用者主要分布在A、B、C地区和国家,我打算对上一篇…

ELAdmin 前端启动

开发工具 官方指导的是使用WebStorm,但是本人后端开发一枚,最终还是继续使用了 idea,主打一个能用就行。 idea正式版激活方式: 访问这个查找可用链接:https://3.jetbra.in/进入任意一个能用的里面,顶部提…

消息中间件之RocketMQ源码分析(六)

Consumer消费方式 RocketMQ的消费方式包含Pull和Push两种 Pull方式。 用户主动Pull消息,自主管理位点,可以灵活地掌控消费进度和消费速度,适合流计算、消费特别耗时等特殊的消费场景。 缺点也显而易见,需要从代码层面精准地控制…

vue3+ts+vite搭建步骤

vue3 ts vite搭建步骤如下: 1,首先确保你的机器上已经安装了 Node.js 和 npm。你可以通过在终端运行 node -v 和 npm -v 来检查是否已经安装。 2,安装 Vite。在你的终端运行以下命令 npm install -g create-vite3,使用 Vite 创…

docker部署自己的网站wordpress

目录 安装 1.创建目录 2.创建并启动mysql 3.创建并启动wordpress 使用 1.设置语言 2.设置基础信息 3.首页 安装 1.创建目录 mkdir -p /opt/wordpress/{db,data} 2.创建并启动mysql docker run -d --name my_mysql --restart always -e MYSQL_ROOT_PASSWORD123456 -e …

深度学习本科课程 实验1 Pytorch基本操作

一、Pytorch基本操作考察 1.1 任务内容 使用 𝐓𝐞𝐧𝐬𝐨𝐫 初始化一个 𝟏𝟑 的矩阵 𝑴 和一个 𝟐𝟏 的矩阵 𝑵,对两矩阵…

home work day5

第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …

flutter使用qr_code_scanner扫描二维码

qr_code_scanner仓库地址&#xff1a;qr_code_scanner | Flutter Package 需要添加android和ios的相机权限和本地相册权限&#xff1a; android中添加权限: 在android\app\build.gradle中修改&#xff1a;minSdkVersion 20 并且在android/app/src/main/AndroidManifest.xml中…

【力扣】Z字形变换,模拟+直接构造

Z字形变换原题地址 方法一&#xff1a;利用二维矩阵模拟 对于特殊情况&#xff0c;z字形变换后只有一行或只有一列&#xff0c;则变换后的字符串和原字符串相同。 对于一般情况&#xff0c;我们可以考虑按照题目要求&#xff0c;把字符串按照Z字形存储到二维数组中&#xff…

【linux】git和gdb调试工具

在linux下提交代码同步到gitee 1.创建一个新的仓库&#xff08;演示步骤&#xff09; 2.init 这两个步骤用于识别提交代码的身份&#xff0c;一个你的名字&#xff0c;一个你的邮箱 开启本地仓库 克隆本地仓库成功 我们将这个仓库拷到了111目录底下. 我们发现少了一个.gitig…

测试python模块每个模块耗时

1.安装包 pip install snakeviz2. 运行测试 # 模块测试运行命令 PYTHONPATH$PWD python -m cProfile -o profile.stats_v2 new_core/schemes/cost_bom/bom_server.py #可视化运行的结果 python -m snakeviz profile.stats_v2 --server -H 0.0.0.0 -p 80813. 参数解释 cProfil…

最小覆盖子串[困难]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串&#xff0c;则返回空字符串"" 。 对于t中重复字符&#xff0c;我们寻找的子字符串中该字符数量必须不少于t中该字符数量…

使用Nginx搭建旁路服务器获取客户端真实IP

一、前言 在实际业务开发过程中&#xff0c;很多时候有记录客户端真实IP的需求&#xff0c;但是从客户端发送的请求往往会经过很多代理服务器&#xff0c;导致后端服务获取的IP为代理以后的IP&#xff0c;不具有业务含义。为了解决这个问题&#xff0c;可以搭建一个旁路服务器…

谷歌seo搜索引擎优化方法有什么?

想知道谷歌优化方法有什么&#xff0c;首先要了解谷歌搜索引擎的工作原理&#xff0c;谷歌的工作原理主要是通过“爬虫”来实现的&#xff0c;所谓“爬虫”就是一只能够读取并分析网页内容的程序&#xff0c;或者也能理解成机器人&#xff0c;当你在谷歌上输入关键词进行搜索时…

彻底学会系列:一、机器学习之线性回归(二)

0. 概念和公式 请参考&#xff1a;一、机器学习之线性回归&#xff08;一&#xff09; 1. 涉及公式 1.1 简单线性回归 y w x b y wx b ywxb 1.2 多元线性回归 y ^ w 1 X 1 w 2 X 2 . . . w n X n w 0 \hat y w_1X_1 w_2X_2 ... w_nX_n w_0 y^​w1​X1​w2​X2​.…

uniapp小程序实现直播组件live-player全屏问题

实现效果&#xff1a; 代码&#xff1a; <template><view class"player-content"><!-- #ifdef APP-PLUS --><video id"myVideo" :src"srcLink" autoplay controls><!-- 打开全屏 --><image class"img…

K8S-PV 与PVC

持久存储卷&#xff08;Persistent Volume&#xff0c;PV&#xff09; PV 是k8s管理员定义的好的物理存储或者说实际存储&#xff0c;对应用来说是透明的&#xff0c;应用只需要向着PVC申请即可&#xff0c;具体使用的创建好的那个PV是由PVC去匹配和绑定的。 PV是集群中的定义…

速度规划:s形曲线------pencv c++绘图(1)

理论篇 代码篇&#xff1a; opencv环境配置 注意&#xff01;注意&#xff01;注意&#xff01; 配置结束后运行环境切换为如下再运行&#xff1a; #include <iostream> #include <cmath>#include <opencv2/opencv.hpp>using namespace std;double a_max…

github和gitee

github GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git作为唯一的版本库格式进行托管&#xff0c;故名GitHub。 github可以给提交的代码打上标签&#xff0c;方便版本的迭代和回退&#xff0c;也是一个存储代码的仓库 github工作区 gitee是gitHub的…