Java中static静态变量--继承等相关知识

目录

static

继承:

继承的特点:

案例:自己设计一个继承体系练习:

设计思想:

代码:

子类到底能继承父类的哪些类容?

成员变量内存的继承情况:

成员方法的内存继承情况:

继承中访问的特点:

成员变量的访问特点:就近原则

成员方法的访问特点:

方法的重写:

继承中构造方法的访问特点:

案例:带有继承结构的标准Javabean类


static

静态方法中不能非静态的东西,非静态的东西比如成员变量,成员方法。(本质上没有this的原因)静态方法中没有this关键字,静态方法中,只能访问静态,非静态方法可以访问所有(非静态的方法中是有this,也可以通过this调用静态中的东西)。

继承:

什么时候用继承呢?

当类与类之间,存在相同的内容,并满足子类是父类中的一种,就可以考虑使用继承来优化代码。

继承的特点:

Java只支持单继承(一个子类只能继承一个父类)不支持多继承(子类不能支持多个父类),但是可以多层继承的(子类a继承父类b,父类b继承父类c是可以的,c是a的间接父类);简单理解:儿子不能有多个爸爸。

c++语言中是允许多继承的。

默认父类object。

案例:自己设计一个继承体系练习:

设计思想:

代码:
package jicheng;public class Animal {public void eat() {System.out.println("吃东西");}public void drink() {System.out.println("喝水");}
}
package jicheng;public class buoucat extends cat{}
package jicheng;public class cat extends Animal {public void cotch(){System.out.println("猫抓老鼠");}
}
package jicheng;public class dog {public void lookhome    () {System.out.println("狗看家");}
}
package jicheng;public class husky extends dog{public void breakhome(){System.out.println("哈士奇在拆家");}
}
package jicheng;public class lihuacat extends cat{
}
package jicheng;public class Teddy extends dog{public void touch(){System.out.println("泰迪touch");}
}
package jicheng;public class TEXT {public static void main(String[] args) {//创建布偶猫对象buoucat rd = new buoucat();rd.eat();rd.drink();rd.cotch();System.out.println("==============");//创建哈士奇对象husky d = new husky();d.lookhome();d.breakhome();}
}

运行结果:

注意点:

子类到底能继承父类的哪些类容?

成员变量都可以被继承下来,但是能不能用还要具体看。

一个类要被使用,要先把字节码文件加载到方法区

成员变量内存的继承情况:

如下图:继承内存图:和之前有两处不一样,在方法区加载字节码文件的时候它会把父类也加载过来。堆内存中,在创建对象的时候,里面是有一部分从父类继承过来的成员变量,还有一部分是存储子类的成员变量。

在Java虚拟机中有一个“保洁阿姨”也就是垃圾回收器,会在合适的时候把垃圾清理掉。

如下图:当“老爹”用的private,“儿子”就调用不了,但是也会把父类加载出来

成员方法的内存继承情况:

成员方法的继承,当方法比较多的时候,一个一个的继承太不切实际。顶层的方法会抽取经常用的方法构成一个虚方法表,这个方法表是非private,非static,非final的。在底层在调用的时候,直接在虚方法表中找:

内存:

子类继承父类的方法,父类的方法能够加载到虚方法表中就可以被继承,不能够加载到虚拟方法表中就不能被调用。

内存分析工具在这个视频37分27秒处:面向对象进阶-06-子类到底能继承父类中的哪些内容_哔哩哔哩_bilibili

继承中访问的特点:

成员变量的访问特点:就近原则

(this是在本类成员变量里面找)

成员方法的访问特点:

和成员变量访问特点相似

方法的重写:

方法的重写:本质上是覆盖了虚方法表中的方法,如下图:

第5条第6条,不严谨,实际上只有被添加到虚方法表中的方法才能被重写。!!!!!!!

案例:利用方法重写设计继承结构-》这个视频的36分27秒开始面向对象进阶-07-继承中成员变量和成员方法的访问特点_哔哩哔哩_bilibili

继承中构造方法的访问特点:

构造方法部分:面向对象进阶-08-继承中的构造方法和thissuper关键字_哔哩哔哩_bilibili

案例:带有继承结构的标准Javabean类

案例后面补:在这个视频的20分30秒处面向对象进阶-08-继承中的构造方法和thissuper关键字_哔哩哔哩_bilibili

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

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

相关文章

示例:WPF中如何处理TabControl页面绑定ItemsSource切换TabItem时UI数据没有持久保存的问题

一、目的:在WPF开发过程中,经常用到TabControl,也会遇到类似问题,用TabControl绑定数据源ItemsSource时,切换TabItem时,UI上的数据没有持久保存,本文介绍一种处理方式,可以做到缓存页…

矩阵管理系统有哪些功能?

在当今快节奏的数字时代,管理多个社交媒体账号或内容渠道可能是一项令人望而生畏的任务。这就是矩阵管理系统大显身手的地方。矩阵管理系统是一种高效的工具,它帮助我们轻松地管理多个内容发布点,就像指挥官控制着整个战场一样。下面&#xf…

C++·set与map容器(下)

本节把红黑树封装到set与map容器中去主要就是迭代器的自增自减,封装的大部分内容都展示到最后代码中了 1. 红黑树的改造 因为set容器只有关键码值,map容器中不仅要存关键码值,还要存关键码值对应的数据。但是红黑树只有一颗,我们…

【轨物方案】码头卸船机在线监测物联网解决方案

卸船机是利用连续输送机械制成能提升散粒物料的机头,或兼有自行取料能力,或配以取料、喂料装置,将散粒物料连续不断地提出船舱,然后卸载到臂架或机架并能运至岸边运输的地方送机系统去的专用机械。每年都要安排人员定期去现场巡检…

搭建DNS正向解析,反向解析+搭建DNS主从架构+搭建DNS多区域+时间同步

主要在局域网中配置,不存在外网 正向解析:域名解析为IP named.conf 解决权限 named.rfc1912.zones 解决解析方式 环境准备:三台机器都做下面的操作 基础配置:网络配置,关闭安全架构,关闭防火墙&#x…

3D模型可视化引擎HOOPS Luminate功能一览:实时渲染(二)

HOOPS Luminate是一款专为图像可视化设计的C编程工具包。它通过一个统一的集成API,全面覆盖了实时2D、实时3D以及照片级逼真渲染的图形功能。在处理大型数据组件的显示方面,HOOPS Luminate展现出了卓越的性能,并且具备高度的可定制性和灵活性…

一文带你读懂TCP

文章目录 1 TCP协议1.1 TCP 基础1.1.1 TCP 特性1.2.2 TCP连接数 1.2 TCP 头1.2.1 TCP 头格式1.2.2 MTU,MSS,分片传输 1.3 TCP 连接三路握手1.4 TCP 断开四次挥手1.5 SYN攻击和防范1.6 重传机制1.6.1 超时重传1.6.2 快速重传1.6.3 SACK 1.7 滑动窗口1.8 流…

VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法

文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题,这个表示连接被对方重置了,就是说在读取数据时连接被关闭。 我首先怀疑是不是…

springboo 整合 redis

springBoot 整合 redis starter启动依赖。—包含自动装配类—完成相应的装配功能。 引入依赖 <!--引入了redis整合springboot 的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…

PostgreSQL的pg-collector工具

PostgreSQL的pg-collector工具 pg-collector 是一个用于 PostgreSQL 数据库的监控和数据收集工具。它主要用于收集 PostgreSQL 实例的性能指标、查询统计和日志信息&#xff0c;以便进行数据库性能分析和故障排查。通过收集这些数据&#xff0c;管理员可以更好地了解数据库的运…

盘点2024年网上很火的4个语音识别转文字工具。

语音识别转文字是一项非常实用的技术&#xff0c;可以帮助我们在会议记录中省去手动记录&#xff0c;在采访中迅速得到文字稿&#xff0c;在学习中快速生成课堂笔...运用十分广泛。但是很多人不知道要怎么转换&#xff0c;在这里我便给大家介绍几款效率非常高的语音转文字的工具…

python 裁剪图片

情况&#xff1a; 有时候看视频&#xff0c;看到一个漂亮的妹子&#xff0c;按下 Alt PrintScreen 进行截图之后&#xff0c;会把整个屏幕都截图。 需要适当剪裁一下。 每次打开 PS &#xff0c; 也太慢了。 所以写个代码&#xff0c; 快速处理。 效果对比&#xff1a; 原始…

轨道式智能巡检机器人,助力综合管廊安全运维

1 引言 当前城市综合管廊建设已经成为世界范围内的发展趋势&#xff0c;2017年5月住建部、发改委联合发布《全国城市市政基础设施建设“十三五”规划》&#xff0c;截至2017年4月底国内地下综合管廊试点项目已开工建设687 km&#xff0c;建成廊体260 km&#xff0c;完成投资40…

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL&#xff0c;由微软推出的关系型数据库&#xff0c;默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件&#xff08;.mdf&#xff09;&#xff1a;主要的数据文件&#xff0c;包含数据表中的数据和对象信息…

使用update-alternatives管理GCC版本

使用update-alternatives管理GCC版本 简介操作过程 简介 当操作系统中存在多个版本的GCC时&#xff0c;可以使用使用update-alternatives管理默认使用的编译器版本。 本文使用gcc-9和gcc-11做演示&#xff0c;操作系统为ubuntu-20.04 操作过程 ①使用以下命令确认gcc已正确…

Ubuntu22.04重装系统+基础配置

重装系统 note&#xff1a;备份数据&#xff0c;重装系统后home下的文件会丢失&#xff0c;所以先备份一下home的数据到其他的盘/mnt/下里。记住之前系统的DNS&#xff0c;IP和掩码。 先在Ubuntu官网下载22.04桌面版&#xff08;种子链接要用迅雷下载&#xff09;。但是版本还…

橙单前端项目下载编译遇到的问题与解决

今天下载orange-admin前端项目&#xff0c;不过下载下来运行也出现一些问题。 1、运行出现下面一堆错误&#xff0c;如下&#xff1a; 2、对于下面这个错误 error Expected linebreaks to be LF but found CRLF linebreak-style 这就是eslint的报错了&#xff0c;可能是原作者…

隆尧县“隆品佳尧”区域公用品牌发布推介会暨地标之都七月选品会成功举办

在国家乡村振兴战略与农业现代化建设的大背景下&#xff0c;隆尧县凭借其得天独厚的地理优势和丰富的自然资源&#xff0c;正在成为区域经济与品牌建设的一颗新星。为了进一步推动隆尧县的农业发展和乡村建设&#xff0c;由隆尧县商务局指导、隆尧县电子商务公共服务中心主办的…

【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)

题目见下&#xff1a; 测试数据: 解题思路笔记&#xff1a; 最初拿到这道题是很蒙的&#xff0c;联想不到什么数据结构的模型&#xff08;肯定是笔者积累太少了&#xff09;&#xff0c;甚至惯性地想怎么实现“删除数字”的操作&#xff1a;在原字符串中抽出一个字符然后将剩…

南非云手机:助力企业在南非的商业活动

中国企业在南非的商业活动涵盖了多个领域&#xff0c;包括基础设施建设、采矿业、制造业、能源、电信、金融服务等。随着中国企业在南非的不断扩展&#xff0c;如何高效管理业务和保护数据安全成为了重要课题&#xff0c;而南非云手机为企业提供了强大的技术支持和便利的管理工…