java三大特征 重載與重寫的區別

💡涉及的知識點速通

  • 🛫 OOP的三大特征都是什么?
    • 🪂 什么是封裝?
    • 🪂 什么是繼承?
    • 🪂 什么是多態?
  • 🛫 關于構造器你都知道什么?
  • 🛫 關于類的源文件都需要知道什么?
  • 🛫 重載和重寫都是什么?

??各位小伙伴們大家好,歡迎來到這個小扎扎的《Java核心技術 卷Ⅰ》筆記專欄,在這個系列專欄中我將記錄淺學這本書所得收獲,鑒于 看到就是學到、學到就是賺到 精神,這波簡直就是血賺

🛫 OOP的三大特征都是什么?

??要想知道OOP的三大特征,首先應該知道什么是OOP,OOP就是Object Oriented Programming面向對象程序設計語言,Java就是這么一門語言。面向對象程序設計語言的三大特征是封裝、繼承、多態,封裝說明一個類的行為屬性與其他類的關系——高內聚低耦合;繼承是超類對子類的擴展;多態是超類變量的引用指向子類對象。

🪂 什么是封裝?

??封裝又叫數據隱藏,是處理對象的一個重要概念。簡單來說封裝就是將類的屬性和行為組合在一個包中,并對對象的使用者隱藏內部的具體實現方式。實現封裝的關鍵在于程序只能通過對象的方法與對象的數據進行交互(故又被認為是"黑盒"),無需知道對象的內部細節,這是提高重用性(其他類可以通過對象直接調用類的屬性方法)和可靠性(隱藏內部細節,無法直接修改屬性)的關鍵
??除了以上優點封裝還有:我們可以使用訪問器和更改器對外提供一個封裝字段的獲取和修改方法,并且可以在更改器中使用代碼完成錯誤檢查邏輯等操作,如果單純將字段暴露出去隨意調用的話就無法完成這個操作。在這里插入圖片描述

🪂 什么是繼承?

??繼承的基本思想就是可以基于一個已有的類來創建新的類,繼承已存在類就可以復用這個類的屬性方法,除此之外還可以在繼承的基礎上自定義一些新的屬性和方法。繼承通過extends關鍵字完成,一個類只能繼承自一個超類,但是超類還可以繼承自其他的超類,這就是間接繼承。
??謹記,繼承之后可以在子類中可以增加字段和方法或者覆蓋(重寫)方法,但是繼承絕不能也不會刪除任何字段或者方法在這里插入圖片描述

🪂 什么是多態?

??多態形式上就是超類的變量引用指向子類對象,于是多態的另一個要素就是兩個類之間有繼承關系。當使用多態實例化對象調用方法的時候,調用子類自定義的獨有方法時會報錯在這里插入圖片描述調用的超類方法被子類重寫后會使用子類重寫的方法在這里插入圖片描述

🛫 關于構造器你都知道什么?

??首先是構造器的簡介:構造器又被稱為構造函數,要想使用對象的話,首先必須要構造對象,在構造對象的同時構造器會運行并初始化類中字段的初始狀態。關于構造器我們還需要了解的是:

  • 構造器的命名應該與類相同
  • 每個類中能夠有一個以上的構造器
  • 構造器的參數可以是0~無數個
  • 構造器沒有返回值
  • 千萬別在構造器中定義與實例字段同名的局部變量
  • 構造器總是伴隨著new操作串一起使用來實例化對象(實例化出來的Java對象都在堆中存儲,使用new實例化會返回該對象的地址)

??如果在自定義類編寫的時候不去定義構造器的話,編譯器會默認提供一個該類的無參構造器,無參構造器沒有初始化方法體的話就會初始化所有的變量成該數據對應類型的默認值,有初始化方法體就按方法體對字段進行初始化。只要是你定義了一個有參構造器的話,就不會提供默認的無參構造器,此時使用無參構造器實例化對象的話就會產生異常在這里插入圖片描述

🛫 關于類的源文件都需要知道什么?

??一個.java文件中只能有一個public修飾的公共類,但是可以有任意數目的非公共類,源文件的文件名就是由這個public修飾的類名加上.java后綴組成在這里插入圖片描述??當編譯這個擁有兩個類的.java文件時,編譯器會在目錄下創建兩個類文件:一個是Test_construtor.class字節碼文件,一個是Test.class字節碼文件在這里插入圖片描述??main方法可以在任意一個類中(公共類或者非公共類都可以),運行的時候需要將包含main方法的類名交給java.exe程序,即可執行返回相應的結果在這里插入圖片描述??使用通配符*可以完成多個源文件的調用,這里假設People類和Fork類被分別放在兩個源代碼文件中,如果編譯器發現People源文件使用到了Fork類的時候,就會查找名為Fork.class的字節碼文件,如果找不到就會搜索Fork.java源代碼文件進行編譯。更重要的是,如果Fork.java的字節碼文件有更新的話(也就是內容發生改變),java編譯器就會自動重編譯這個源代碼文件。

🛫 重載和重寫都是什么?

方法重載
??方法重載就是一個類中方法名相同但是方法的參數列表不相同的一堆方法,在這里參數列表不同說的是參數的類型、參數的個數、甚至于參數的順序不一樣。訪問權限和方法的返回值類型不能作為方法是否重載的判斷依據,也就是說當方法名和參數列表一樣的時候,訪問權限和方法的返回值類型不管是否一樣都不算是方法重載。在這里插入圖片描述??方法出現重載的時候說明這個類中有兩個以上的同名方法,當我們調用方法的時候編譯器是如何確定到底調用的是哪個方法的呢?這就要說到重載解析的概念了,重載解析就是使用各個重載方法中的參數類型與特定方法調用所使用的值類型和順序進行匹配,從而挑選出正確的方法,當然都找不到的話就會產生編譯時異常。
??方法簽名的概念:方法名加參數類型的組合就是方法的簽名,一個類中無法存在兩個簽名一樣的方法在這里插入圖片描述方法重寫
??方法重寫就是當子類繼承超類之后就擁有了超類的屬性和行為,但是超類不想原封不動的使用超類的行為,于是就重新定義超類的方法體。方法的重寫應該注意的是:

  • 重寫發生在超類和子類之間
  • 重寫時的方法名、參數列表、返回值類型相同,但是如果重寫方法的返回類型是被重寫方法返回類型的子類的話也可以
  • 重寫方法的訪問權限大于被重寫方法(public>protected>default>private)
  • 重寫方法拋出新的檢查異常或者拋出比被重寫方法范圍更大的異常
  • 子類無法重寫超類的靜態方法和私有方法

重載與重寫的區別
??方法重載與重寫之間的區別:方法重載與重寫都是實現多態的一種方式,區別在于前者實現的是編譯時的多態性,而后者實現的是運行時的多態。重載發生在一個類中,重寫發生在子類與超類之間,有關這兩種形式中方法聲明的具體要求參見上面的答案

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535044.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

發生身份驗證錯誤_Python MySQL8.0 錯誤

Python MySQL8.0 錯誤:authentication plugin calling_sha2_password is not supported.Python3 進行到 python3 mysql(mysql-connector),然后安裝mysql-8.0.16,照著示例程序運行 python,遇到這個大大的問題:authentic…

vue 獲取當前元素的父元素_react獲取觸發元素的屬性 e.target.dataset

我的react項目中一個應用場景就是在點擊一個元素的時候想要獲取到這個元素的屬性。代碼如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//點擊標簽的時候觸發的函數 TagClick(e)>{console.log…

為什么要學Redis(NoSQL數據庫)

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

centos常用命令_二、Docker鏡像是什么?Docker常用命令

科技奇聞 關注讓你我共同進步文章來源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.幫助命令docker version #查看版本號docker info #顯示Docker系統信息&#xff0c;包括鏡像和容器數docker --help #查看Docker有哪些命令…

實現定時中斷_無線傳感器網絡實驗報告(二)Timer定時應用實驗

實驗二&#xff1a; Timer定時應用實驗2.1實驗目的1. 認識并了解 CC2530 定時器&#xff1b; 2. 學習定時器的基本配置與應用&#xff1b; 3. 在 ZigBee 模塊上運行定時器程序。2.2實驗原理根據數據手冊可知 CC2530 總共有 4 個定時器&#xff0c;但是定時器 2 被系統占用&…

詳析java中的關鍵字和權限修飾

&#x1f4a1;涉及的知識點速通&#x1f6eb; 關于關鍵字你都知道什么?&#x1fa82; this和super關鍵字&#x1fa82; instanceof關鍵字&#x1fa82; static關鍵字&#x1fa82; final關鍵字&#x1f6eb; 權限修飾符的作用范圍知多少?各位小伙伴們大家好&#xff0c;歡迎來…

JQ 全選后獲取選中的值_Filecoin如何創建賬戶錢包并獲取FIL測試幣

昨天"猩動力節點"加入了fielcoin的測試網絡&#xff0c;對用戶或者礦工來說&#xff0c;如何獲取代幣&#xff0c;創建錢包保護好自己的資產&#xff0c;每一個用戶來說都很關心。下面我們一起來學習如何創建賬戶錢包&#xff0c;并獲取FIL 測試代幣。在創建賬戶錢包…

Redis中 字符串的常用命令

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

mac wmware 無網絡_無線網絡中常用的技術名詞

1、LAN&#xff1a;即局域網&#xff1a;是路由和主機組成的內部局域網&#xff0c;一般為有線網絡。2、WAN&#xff1a;即廣域網&#xff1a;是外部一個更大的局域網。3、WLAN(Wireless LAN&#xff0c;即無線局域網)&#xff1a;前面我們說過LAN是局域網&#xff0c;其實大多…

python界面開發webview_python在webview和activity混合頁面下怎么定位

展開全部 genymotion 模擬器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安裝_Android Studio4.0 安裝及配置

本來打算十一月份寫的&#xff0c;結果。。。就在我備注原來的文章的時候&#xff0c;硬盤壞了。。。所以重新配置環境。。。換硬盤&#xff0c;。。。壞的太突然以至于數據都沒有備份。。。。建議大家在參考教程安裝之前先大致瀏覽一遍&#xff0c;這樣安裝的時候就會大致知道…

Redis 五大數據類型的常用命令——列表、集合、哈希、有序集合

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站尚硅谷的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&…

python工程師面試寶典_2019年,Python工程師必考的6個面試題,Python面試題No5

第1題&#xff1a;Python里面如何實現tuple和list的轉換&#xff1f; 函數tuple(seq)可以把所有可迭代的(iterable)序列轉換成一個tuple, 元素不變&#xff0c;排序也不變 list轉為tuple&#xff1a; temp_list [1,2,3,4,5] 將temp_list進行強制轉換&#xff1a;tuple(temp_li…

aop注解配置切點 spring_springboot aop 自定義注解方式實現一套完善的日志記錄

一&#xff1a;功能簡介本文主要記錄如何使用aop切面的方式來實現日志記錄功能。主要記錄的信息有: 操作人&#xff0c;方法名&#xff0c;參數&#xff0c;運行時間&#xff0c;操作類型(增刪改查)&#xff0c;詳細描述&#xff0c;返回值。二&#xff1a;項目結構圖如果想學習…

抽象類、接口的區別和相似點

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的《Java核心技術 卷Ⅰ》筆記專欄&#xff0c;在這個系列專欄中我將記錄淺學這本書所得收獲&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波簡直就是血賺 &#x1f4a1;涉及的知識點速通&#x1f6eb; abs…

c標簽判斷true false jsp_Java學習知識點:小白如何掌握JSP技術?

今天千鋒廣州小編就給大家分享零基礎如何掌握JSP技術&#xff0c;下面一起來看看吧!一、Java初級開發之jsp概述1.關于jspJavaServer Pages簡稱jsp&#xff0c;從“server”這個詞可以看出&#xff0c;這其實也是一門java服務端技術&#xff0c;其實可以簡單的把jsp認為是servle…

python語言保留字的特點_python保留字及其說明

原博文 2019-07-14 22:05 ? 保留字 說 明 and 用于表達式運算&#xff0c;邏輯與操作 as 用于類型轉換 assert 斷言&#xff0c;用于判斷變量或條件表達式的值是否為真 break 中斷循環語句的執行 class 用于定義類 continue 繼續執行下一次循環 ...011647 相關推薦 2019-12-19…

使用Java操作Redis的兩種方式Jedis、RedisTemplate

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…

python提取數據庫數據_Python如何讀取MySQL數據庫表數據

本文實例為大家分享了Python讀取MySQL數據庫表數據的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下 環境&#xff1a;Python 3.6 ,Window 64bit 目的&#xff1a;從MySQL數據庫讀取目標表數據&#xff0c;并處理 代碼&#xff1a; # -*- coding: utf-8 -*- import p…

【項目實戰】基于Redis實現短信驗證碼登錄 (附源碼、思路)

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的Redis 6專欄&#xff0c;在這個系列專欄中我對B站黑馬的Redis教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知識點速覽&#…