【Java学习】Object类与接口

面向对象系列五

一、引用

1.自调传自与this类型

2.类变量引用

3.重写时的发生

二、Object类

1.toString

2.equals

3.hashCode

4.clone

三、排序规则接口

1.Comparable

2.Comparator


一、引用

1.自调传自与this类型

似复刻变量调用里面的非静态方法时,都是自调传自,自己选择去调用哪个非静态方法并将自己传过去,每一个非静态方法里的this就是接调用者的,所以,谁去调用这个非静态方法的,非静态方法里的this就是谁,但this能不变的只有传值对象头是确定的,经常会有发生转型this形参的类型是此非静态方法所属的类的类变量引用类型


2.类变量引用

类变量引用是能掌握此所指似复刻变量里的成员、方法路径信息的访问的,类变量引用的对象是似复刻变量,向上转型向下转型是发生在类变量引用指似复刻变量层面

引用变量,里面装所指对象的头地址,配合此引用变量类型的访问权限性质进行访问的向上转型与向下转型是一个引用变量里引用类型的转换,对象头存着,引用类型引用访问权限性质的改变父子类类变量引用中常常拿着当前似复刻变量对象的对象头去互接去实现对应的整个父子合起来的似复刻变量、单父类似复刻变量的访问,其中,对象头地址是交接着它传它接不变的,始终指向这块对象的地址头,变的是子类类变量引用下、父类类变量引用下的引用访问权限,影响到最后访问的效果

类变量似复刻变量可参考面向对象系列一【Java学习】类和对象-CSDN博客)


3.重写时的发生

重写是转型后的父类类变量引用传自己去调用父类里被重写的方法时发生的,发生时的调用现象是转型后的父类类变量引用传接到隐藏的this父类类变量形参,这时发生方法重写,此转型后的父类类变量引用直接向下转型为子类类变量引用类型直接this权限全开为整个对象并去调用子类那边重写的方法,因为重写的两方法是相同的隐藏形参this外的其它形参都是正常传

所以子类这边super()去调用父类那边的被重写的方法时,父类隐藏形参那边是有发生向上转型,但重写发生的条件是向上转型后的类变量引用去传自己去调用父类的那个被重写的方法,转型后的父类类变量引用传到用被重写方法的父类类变量引用接发生的,所以子类这边传子类似复刻变量自己super指向父类非静态方法调用时是去指向父类的被重写的方法执行父类被重写本身的方法而不会发生重写去执行子类那边的方法


二、Object类

Object类是所有类的父类,所有的类都有默认继承了Object类,Object类里面有很多方法提供给任何一个正常类继承着可以去使用的,但我们常常在子类里重写在默认父类里的这些方法对应实现上针对实际所需情况

  • Object类里的方法都是非静态方法,哪个似复刻变量去调用的里面的this就是哪个转型后的似复刻变量引用
  • Object类里面都是有具体实现的非静态方法,是没有抽象方法的正常类,是可以直接实例化的

1.toString

1.1Object里原方法:

  • getClass().getName() -> 返回调用者当前对象当前似复刻变量的类的包名类名全路径
  • Integer.toHexString(hashCode()) -> 返回当前调用它的似复刻变量哈希码值(一个整数)的十六进制

返回当前似复刻变量对象所属于的类所在的包名类名@当前似复刻变量对象的哈希码值的十六进制


1.2子类里重写方法:

更改实现成返回获取当前似复刻变量里复制变量信息


2.equals

2.1Object里原方法:

引用类型数据==拿去判断的是引用变量里装的对象头哈希值这个值而与它的访问权限性质无关的,即比较是不是指向在同一个对象头,纯值拿来比较,与性质无关


2.2子类里重写方法:

重写后的方法比较重心不在是不是指向同一个对象头上同一个对象上,而是比较两引用所指对象里的复制变量数据是否相等


3.hashCode

3.1Object里原方法:

一个对象放在一个地址空间上

未重写hashCode之前,hashCode方法是基于对象地址内容分配所处内存位置并计算内存位置哈希码值并返回,如果重写了equals方法,就会出现判断成是同一个的一个对象的出现在两个不同的地址空间上,同一个的一个对象是只能出现在一个地址空间上的,所以equals重写判断对象相等的标准之后,hashCode分配对象所处空间的标准也要跟着变,用新的equals判断标准来分配空间,原来它们都是共用地址同一块标准的,现在的相等与分配也要改成相同判断依据保持一致,所以要重写hashCode方法,将它的内存分配依据从原来的地址改成与现在重写的equals判断相等的依据一样


3.2子类里重写方法:

以新的分配标准分配对象内存并计算其内存位置哈希码值返回


4.clone

4.1Object里原方法:

Object类中有提供由本地实现的克隆方法,将调用它的对象传过来的this里的对象头指向的原对象全部拷贝一份在堆上(克隆只能对传来的this指向的整对象克隆说明只能克隆类变量创的似复刻变量、克隆只需要对象头地址,不需要它所在的引用的访问权限,有对象头地址就可把整个对象全克隆拷贝一份出来),拷贝出来后的似复刻变量再通过返回值转型都能统一向上转型为Object类的引用以统一的返回值返回出来实现方法的共用,因为向上转型为Object类变量引用了,方法将Object类引用返回后我们要通过强转向下转型回原来克隆出的对象拿到


4.2基于Object原方法

我们我们的克隆都是基于Object类里的那个本地克隆方法实现的它不是抽象方法不是一定要重写,直接从子类调用Object父类里的那个方法就行了去实现重写时往往是因为要根据实际拷贝需求自己再重写去调整拷贝设计的重写的方法也是在重写方法里去调用Object类里原生提供的克隆方法进行的,重写方法时我们可以根据需求把似复刻变量以及如果里面也有装似复刻变量一起深层地把所有似复刻变量都拷贝出来达到深拷贝


4.3clone使用条件

需要实现克隆功能的类仅仅有Object类继承方法提供克隆方法下也还是不够的:

  • 需要连接Cloneable空接口来标记此类允许被克隆的
  • 有关克隆的任何方法都需要加上 throws CloneNotSupportedException

三、排序规则接口

接口、抽象类都是不能直接对着它实例化的,必须通过连接继承在一个正常类上,通过实例化正常类间接实例化上它们,无法new接口,无法对着接口直接new实例化的,接口的实例化只能通过new连接有它的子类来间接实例化上接口接口里有抽象方法非静态的需要实例化的才可调用才可传有参才可使用

基本数据类型元素的数组排序规则是默认已经有定的,似复刻变量类型元素的数组没有默认排序规则的,需要我们连接比较接口,重写实现有比较的排序规则给sort用

1.Comparable<T>

Comparable<T>接口与要实现排序类变量的似复刻变量功能的那个类直接连接的,对类的入侵性强

接口里原方法:

子类里重写方法:

接口变量里面抽象方法的形参Object任何类的父类类变量,子类重写方法的形参是必须为T

这样对象就算从接口向上转型导入执行被重写的抽象方法也能实现:

  • 隐藏形参里,隐藏形参里向上转型后的父类引用过重写方法自动完成向下转型权限全打开成为子类引用,先形参转接向上转型再重写向下转型回来
  • Object o与 T o 形参里,任何类变量引用传到接口Object类变量引用都会发生形参转接向上转型,因为<T>强制规定了子类这边重写方法的形参必须是T,向上转型后的父类类变量引用又会进行强制类型转换向下转型转成子类类变量引用(如果传参的子类类变量引用类型刚开始就不与T相同的,向上转型时没什么问题,向下转型后就会报错发现转不了传入的不是规定的T引用类型而停下报错),子类实例以接口导入能实现的从子类实例直接调用重写方法肯定也能实现

2.Comparator<T>

Comparator<T>接口可连接在单独出来的比较器类上的,不需要连接在要实现排序规则的类上,连接在一个专门实现比较规则的比较器类上做出一个独立出来的提供比较规则的类,为需要排序的类变量似复刻变量数组sort排序时作为参数多传一个比较器类的实例似复刻变量参数提供sort方法的排序规则

接口里原方法:

子类里重写方法:

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

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

相关文章

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…

Vscode无法加载文件,因为在此系统上禁止运行脚本

1.在 vscode 终端执行 get-ExecutionPolicy 如果返回是Restricted&#xff0c;说明是禁止状态。 2.在 vscode 终端执行set-ExecutionPolicy RemoteSigned 爆红说明没有设置成功 3.在 vscode 终端执行Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 然后成功后你再在终…

Transformer 架构 理解

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; Transformer 架构&#xff1a;encoder/decoder 内部细节。 的介绍&#xff0c;说明 Transformer 架构相比当时主流的 RNN/CNN 架构的创新之处&#xff1a; 在 transformer 之前&#xff0c;最先进的架构…

事务的4个特性和4个隔离级别

事务的4个特性和4个隔离级别 1. 什么是事务2. 事务的ACID特性2.1 原子性2.2 一致性2.3 持久性2.4 隔离性 3. 事务的创建4. 事务并发时出现的问题4.1 DIRTY READ 脏读4.2 NON - REPEATABLR READ 不可重复读4.3 PHANTOM READ 幻读 5. 事务的隔离级别5.1 READ UNCOMMITTED 读未提交…

LeetCode热题100- 字符串解码【JavaScript讲解】

古语有云&#xff1a;“事以密成&#xff0c;语以泄败”&#xff01; 关于字符串解码&#xff1a; 题目&#xff1a;题解&#xff1a;js代码&#xff1a;代码中遇到的方法&#xff1a;repeat方法&#xff1a;为什么这里不用this.strstack.push(result)&#xff1f; 题目&#x…

水利工程安全包括哪几个方面

水利工程安全培训的内容主要包括以下几个方面&#xff1a; 基础知识和技能培训 &#xff1a; 法律法规 &#xff1a;学习水利工程相关的安全生产法律法规&#xff0c;了解安全生产标准及规范。 事故案例 &#xff1a;通过分析事故案例&#xff0c;了解事故原因和教训&#x…

浅谈新能源汽车充电桩建设问题分析及解决方案

摘要&#xff1a; 在全球倡导低碳减排的大背景下&#xff0c;新能源成为热门行业在全球范围内得以开展。汽车尾气排放会在一定程度上加重温室效应&#xff0c;并且化石能源的日渐紧缺也迫切对新能源汽车发展提出新要求。现阶段的新能源汽车以电力汽车为主&#xff0c;与燃油汽…

05-1基于vs2022的c语言笔记——运算符

目录 前言 5.运算符和表达式 5-1-1 加减乘除运算符 1.把变量进行加减乘除运算 2.把常量进行加减乘除运算 3.对于比较大的数&#xff08;往数轴正方向或者负方向&#xff09;&#xff0c;要注意占位符的选取 4.浮点数的加减乘除 5-1-2取余/取模运算符 1.基本规则 2.c语…

ubuntu:换源安装docker-ce和docker-compose

更新apt源 apt换源&#xff1a;ubuntu&#xff1a;更新阿里云apt源-CSDN博客 安装docker-ce 1、更新软件源 sudo apt update2、安装基本软件 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y3、指定使用阿里云镜像 su…

0—QT ui界面一览

2025.2.26&#xff0c;感谢gpt4 1.控件盒子 1. Layouts&#xff08;布局&#xff09; 布局控件用于组织界面上的控件&#xff0c;确保它们的位置和排列方式合理。 Vertical Layout&#xff08;垂直布局&#xff09; &#xff1a;将控件按垂直方向排列。 建议&#xff1a;适…

Apache Doris 索引的全面剖析与使用指南

搞大数据开发的都知道&#xff0c;想要在海量数据里快速查数据&#xff0c;就像在星图里找一颗特定的星星&#xff0c;贼费劲。不过别慌&#xff0c;数据库索引就是咱们的 “定位神器”&#xff0c;能让查询效率直接起飞&#xff01;就拿 Apache Doris 这个超火的分析型数据库来…

docker file中ADD命令的介绍

在 Docker 的世界里&#xff0c;Dockerfile 是一个用于定义镜像内容和行为的脚本文件。其中&#xff0c;ADD 指令是 Dockerfile 中一个非常重要的命令&#xff0c;用于将文件或目录从主机文件系统复制到容器的文件系统中。本文将详细介绍 ADD 指令的作用、使用方式以及一些最佳…

从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?

本文首发&#xff1a;从零到一&#xff1a;如何用阿里云百炼和火山引擎搭建专属 AI 助手&#xff08;DeepSeek&#xff09;&#xff1f; 阿里云百炼和火山引擎都推出了免费的 DeepSeek 模型体验额度&#xff0c;今天我和大家一起搭建一个本地的专属 AI 助手。  阿里云百炼为 …

cpp中的继承

一、继承概念 在cpp中&#xff0c;封装、继承、多态是面向对象的三大特性。这里的继承就是允许已经存在的类&#xff08;也就是基类&#xff09;的基础上创建新类&#xff08;派生类或者子类&#xff09;&#xff0c;从而实现代码的复用。 如上图所示&#xff0c;Person是基类&…

【QT】QLinearGradient 线性渐变类简单使用教程

目录 0.简介 1&#xff09;qtDesigner中 2&#xff09;实际执行 1.功能详述 3.举一反三的样式 0.简介 QLinearGradient 是 Qt 框架中的一个类&#xff0c;用于定义线性渐变效果&#xff08;通过样式表设置&#xff09;。它可以用来填充形状、背景或其他图形元素&#xff0…

前端项目配置 Nginx 全攻略

在前端开发中&#xff0c;项目开发完成后&#xff0c;如何高效、稳定地将其部署到生产环境是至关重要的一步。Nginx 作为一款轻量级、高性能的 Web 服务器和反向代理服务器&#xff0c;凭借其出色的性能和丰富的功能&#xff0c;成为了前端项目部署的首选方案。本文将详细介绍在…

网络安全学习-常见web漏洞的渗xxx透以及防护方法

渗XX透测试 弱口令漏洞 漏洞描述 目标网站管理入口&#xff08;或数据库等组件的外部连接&#xff09;使用了容易被猜测的简单字符口令、或者是默认系统账号口令。 渗XX透测试 如果不存在验证码&#xff0c;则直接使用相对应的弱口令字典使用burpsuite 进行爆破如果存在验证…

网络安全 机器学习算法 计算机网络安全机制

&#xff08;一&#xff09;网络操作系统 安全 网络操作系统安全是整个网络系统安全的基础。操作系统安全机制主要包括访问控制和隔离控制。 访问控制系统一般包括主体、客体和安全访问政策 访问控制类型&#xff1a; 自主访问控制强制访问控制 访问控制措施&#xff1a; 入…

2025网络安全等级测评报告,信息安全风险评估报告(Word模板)

一、概述 1.1工作方法 1.2评估依据 1.3评估范围 1.4评估方法 1.5基本信息 二、资产分析 2.1 信息资产识别概述 2.2 信息资产识别 三、评估说明 3.1无线网络安全检查项目评估 3.2无线网络与系统安全评估 3.3 ip管理与补丁管理 3.4防火墙 四、威胁细类分析 4.1威胁…

Ubuntu22.04系统安装Anaconda、CUDA和CUDNN

之前一直在Windows系统下使用Anaconda和CUDA加速&#xff0c;最近需要复现一个算法&#xff0c;文档里面有Linux系统conda构建环境的教程。 本篇博文参考博文&#xff0c;记录自己安装的过程&#xff0c;便于以后需要。 目录 1.Anaconda1.1 安装包下载1.2 安装软件1.3 更新cond…