【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.pswp.cn/diannao/70833.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70833.shtml
英文地址,請注明出處:http://en.pswp.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…