AI賦能Java語言編程:從入門到高階 課件 第六章 對象與類_第1頁
AI賦能Java語言編程:從入門到高階 課件 第六章 對象與類_第2頁
AI賦能Java語言編程:從入門到高階 課件 第六章 對象與類_第3頁
AI賦能Java語言編程:從入門到高階 課件 第六章 對象與類_第4頁
AI賦能Java語言編程:從入門到高階 課件 第六章 對象與類_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

對象與類ObjectsandClasses第六章目標(biāo)/OBJECTIVE0102030405理解面向?qū)ο缶幊痰幕靖拍钫莆疹惖穆暶髋c使用學(xué)會(huì)使用構(gòu)造方法了解封裝的概念掌握繼承和多態(tài)學(xué)會(huì)使用抽象類和接口01對象和類的初步介紹6.1對象和類的初步介紹當(dāng)談?wù)揓ava編程語言中的對象與類時(shí),進(jìn)入了面向?qū)ο缶幊蹋∣bject-OrientedProgramming,簡稱OOP)的精華部分。對象與類是OOP的基本概念,賦予了Java語言強(qiáng)大的抽象能力和靈活性,使得程序設(shè)計(jì)變得更加模塊化、可維護(hù)和可擴(kuò)展?!っ嫦?qū)ο蠹夹g(shù)一.使用面向?qū)ο蠹夹g(shù)的原因在面向?qū)ο缶幊坛霈F(xiàn)之前,編程流行的還是面對過程的設(shè)計(jì)方式。當(dāng)使用面向過程的設(shè)計(jì)方式的時(shí)候,編寫的代碼缺乏良好的抽象機(jī)制,可重用性和靈活性差,這樣的話不利于團(tuán)隊(duì)協(xié)作。并且當(dāng)程序的規(guī)模擴(kuò)展的時(shí)候,需要修改很多的代碼,導(dǎo)致維護(hù)困難。隨著開發(fā)系統(tǒng)的不斷強(qiáng)大,面向過程的設(shè)計(jì)方法已經(jīng)不能滿足使用者的要求,這時(shí),面向?qū)ο蟮募夹g(shù)橫空出世。OOP技術(shù)的出現(xiàn),使程序的結(jié)構(gòu)變得簡單,團(tuán)隊(duì)協(xié)作容易,最重要的是,代碼的可重用性和靈活性大大提高。6.1對象和類的初步介紹OOP是一種軟件開發(fā)的編程范式或方法論。其核心思想是使用對象和類的概念來組織和設(shè)計(jì)代碼,來模擬現(xiàn)實(shí)世界中的實(shí)體和其相互之間的關(guān)系。OOP包含的主要概念有:類、對象、封裝、繼承、多態(tài)、抽象、接口、實(shí)例化。二.面向?qū)ο蟮母拍睢ο蠛皖惖亩x一.類的定義在面向?qū)ο缶幊讨校愂且环N用于描述對象共同特征和行為的抽象數(shù)據(jù)類型。類是對一類對象的模板或藍(lán)圖,定義了對象的屬性(也稱為成員變量或字段)和方法。通過實(shí)例化,可以基于類創(chuàng)建具體的對象。類通常包含以下元素:類名、成員變量、構(gòu)造方法、方法。類定義含有兩部分:數(shù)據(jù)成員變量和成員方法。其中,class是關(guān)鍵字,表明后面定義的是一個(gè)類。class前面的修飾符可以有多個(gè),用來限制定義的類的使用方式。類名就是用戶給這個(gè)類起的名字,必須是一個(gè)合法的標(biāo)識符,并且應(yīng)盡量遵從命名約定。6.1對象和類的初步介紹類定義中的數(shù)據(jù)成員變量,可以不止一個(gè)。變量名前面的數(shù)據(jù)類型就是給變量的類型;然后另外的方法可以有很多個(gè),方法名前面的返回類型就是方法返回值的類型,然后下面的方法體就是方法需要執(zhí)行的語句。二.對象的定義在Java編程中,對象是類的實(shí)例,是具體存在的數(shù)據(jù)實(shí)體。對象具有特定的屬性和行為。對象是面向?qū)ο缶幊讨械幕靖拍钪?,封裝了數(shù)據(jù)和行為,是代碼更具有靈活性和可維護(hù)性。對象的定義需要包括以下關(guān)鍵點(diǎn):(1)類與實(shí)例:對象是通過類定義的,是類的具體實(shí)體。(2)屬性(成員變量):對象具有一組屬性,這些屬性描述了對象的特征。(3)行為(成員方法):對象能夠執(zhí)行特定的操作,這些操作由類中的成員方法定義。(4)狀態(tài):對象的狀態(tài)由成員變量的當(dāng)前值決定。其反映了對象在某時(shí)刻的屬性值。6.1對象和類的初步介紹(5)封裝:對象封裝了數(shù)據(jù)和行為,限制了對內(nèi)部的直接訪問,需要通過公共接口提供對象的訪問。(6)實(shí)例化:實(shí)例化是根據(jù)類創(chuàng)建對象的過程。通過關(guān)鍵字new可實(shí)例化一個(gè)類,為對象分配內(nèi)存,并調(diào)用構(gòu)造方法進(jìn)行初始化。02類的基本結(jié)構(gòu)6.2類的基本結(jié)構(gòu)聲明類類的聲明指定義一個(gè)類的基本結(jié)構(gòu)。其中,類的聲明包括類的訪問修飾符、類名、以及包含在大括號內(nèi)的類體。下面就是類聲明的一般格式:類的基本結(jié)構(gòu)包括了三個(gè)部分:類的聲明、成員變量和成員方法、構(gòu)造方法。這只是基本結(jié)構(gòu),在實(shí)際應(yīng)用中可能需要根據(jù)具體需求進(jìn)行調(diào)整和擴(kuò)展。6.2類的基本結(jié)構(gòu)一.訪問修飾符訪問修飾符是用于控制類的訪問級別。常見的修飾符用:pubilc(公共)、private(私有)、protected(受保護(hù))以及默認(rèn)修飾符(無修飾符)。pubilc修飾符創(chuàng)建的類對所有的類可見,protected修飾符創(chuàng)建的類對同一包內(nèi)的類和所有子類可見,private修飾符創(chuàng)建的類在同一類可見。二.類名對于類的取名,有一些注意事項(xiàng)需要知道。1.標(biāo)識符規(guī)則:(1)由字母、數(shù)字、下劃線和美元符號組成。(2)第一個(gè)字符必須是字母、下劃線或美元符號。(3)不能是Java關(guān)鍵字。2.用名規(guī)范:遵循Java的命名規(guī)則,類名應(yīng)該使用駝峰命名法,即每個(gè)單詞的首字母大寫,其余的小寫。6.2類的基本結(jié)構(gòu)3.清晰和描述性:類名應(yīng)該是清晰和描述性的,能夠準(zhǔn)確地反應(yīng)類的用途和職責(zé),這樣可以增強(qiáng)代碼的可讀性和可維護(hù)性。4.避免縮寫:盡量避免使用縮寫,除非縮寫是廣泛認(rèn)可的或是行業(yè)標(biāo)準(zhǔn)?!こ蓡T變量和成員方法一.成員變量成員變量是類中用于描述對象狀態(tài)的變量。有時(shí)也被稱為屬性或字段。成員變量定義了對象的特征。每個(gè)類的對象都有一組獨(dú)立的成員變量,這些變量的值可以在類的各個(gè)方法中使用和修改。成員變量通常在類的頂部聲明,也就是在類的大括號之內(nèi),方法之外。并且,成員變量可以使用訪問修飾符來控制成員變量的訪問級別。在成員變量創(chuàng)建完成時(shí),系統(tǒng)會(huì)給成員變量賦予默認(rèn)值,例如int類型默認(rèn)值是0。成員變量的生命周期與對象的聲明周期相同,存在于對象被創(chuàng)建時(shí),并在對象被銷毀是銷毀。成員變量可以分為實(shí)例變量和類變量。實(shí)例變量屬于對象,類變量屬于類。6.2類的基本結(jié)構(gòu)成員方法是類中定義的用于執(zhí)行特定操作或者提供特定功能的函數(shù),也被稱為方法或函數(shù)。成員方法用于表示對象的行為,可以操縱成員變量,并提供外部訪問對象的接口。成員方法被聲明在類的內(nèi)部,即在類的大括號之內(nèi)。成員方法可以有返回值,使用void表示。返回值的類型可以是任何合法的Java數(shù)據(jù)類型,還可以有用訪問修飾符來控制訪問級別。成員變量是可以接受參數(shù)的,參數(shù)列表定義在方法名后面的括號之中。二.成員方法·構(gòu)造方法構(gòu)造方法是類中一類特殊類型的方法,用于創(chuàng)建對象時(shí)進(jìn)行初始化。構(gòu)造方法的名稱必須與類名相同,沒有返回類型,并在使用new創(chuàng)建對象的時(shí)候自動(dòng)調(diào)用。在一個(gè)類中,可以有多個(gè)構(gòu)造方法。只要參數(shù)類型不同。6.2類的基本結(jié)構(gòu)例6.1寵物店需要統(tǒng)計(jì)這些狗狗的各種特點(diǎn),比如品種、大小、年齡、顏色等等。請編寫一個(gè)程序?qū)崿F(xiàn)對類的創(chuàng)建,并在類中添加需要的屬性。03對象的創(chuàng)建和使用6.3

對象的創(chuàng)建和使用對象的創(chuàng)建和使用是面對對象編程中的核心概念。通過類的實(shí)例化,可以創(chuàng)建具體的對象,并通過調(diào)用對象的方法和訪問器屬性來實(shí)現(xiàn)程序的邏輯。對象的使用使得程序更模塊化、可維護(hù)、同時(shí)提供了一種自然而直觀的方式來處理復(fù)雜系統(tǒng)。對象的創(chuàng)建是通過實(shí)例化類來實(shí)現(xiàn)的。類定義了對象的屬性和方法,實(shí)例化指基于類創(chuàng)建一個(gè)具體的對象的過程??梢允褂胣ew關(guān)鍵字來創(chuàng)建一個(gè)新的對象,后面跟著要實(shí)例化的構(gòu)造函數(shù)。在這個(gè)過程中會(huì)有堆內(nèi)存中為對象分配空間,并返回對該空間的引用。當(dāng)使用的類有參數(shù)化的構(gòu)造函數(shù),可以在創(chuàng)建對象時(shí)傳遞參數(shù)。創(chuàng)建對象的一般格式如圖6-3.創(chuàng)建對象6.3

對象的創(chuàng)建和使用注:ClassName是要實(shí)例化的類的名稱,objectName是引用新創(chuàng)建對象的變量名,arguments是傳遞給類構(gòu)造方法的函數(shù),用于初始化對象的屬性。訪問成員變量和調(diào)用成員方法是面向?qū)ο缶幊讨械幕靖拍?,通常使用在類和對象的上下文中。訪問成員變量和調(diào)用成員方法一.訪問成員變量通過訪問成員變量,能夠獲取和修改對象的屬性,首先對數(shù)據(jù)的有效管理。訪問成員變量的方法取決于變量的訪問修飾符。通常,成員變量被聲明為私有,并通過公共方法類提供訪問。可以直接訪問公共成員變量。當(dāng)成員變量的訪問修飾符是公共(public),就可以直接通過實(shí)例對象來訪問。但是,為了更好的控制成員變量,一般會(huì)被聲明為私有(private)。這時(shí)就不能用上面的方法來訪問成員變量,就可以使用Getter和Setter方法提供間接訪問。6.3

對象的創(chuàng)建和使用還可以使用封裝將對象的內(nèi)部隱藏起來,這樣的話,可以更靈活的控制和保護(hù)成員變量。另外,當(dāng)成員變量是靜態(tài)的,可以通過類名之直接訪問,無需創(chuàng)建類的實(shí)例。訪問成員變量的一般格式如下圖。二.調(diào)用成員方法調(diào)用成員方法是面向?qū)ο缶幊讨械囊豁?xiàng)基本操作,用于執(zhí)行對象所具有的特定功能的行為。想要調(diào)用成員方法,需要使用對象實(shí)例并通過點(diǎn)運(yùn)算符.來調(diào)用方法。語法通常是“對象實(shí)例.方法名()”。在方法內(nèi)部,可以使用this關(guān)鍵字引用當(dāng)前對象實(shí)例。當(dāng)調(diào)用成員方法時(shí),程序會(huì)執(zhí)行與方法中的代碼塊。調(diào)用成員方法的一般格式如下圖。6.3

對象的創(chuàng)建和使用注:methodName是成員變量的名稱,arguments是傳遞給方法的參數(shù)。一.引用變量對象引用是用于訪問和操作對象的一種機(jī)制,是指用于便是和操作對象的一種變量或值。創(chuàng)建完對象后,就可以對對象進(jìn)行引用,幾乎所有的數(shù)據(jù)類型都是引用類型?;緮?shù)據(jù)類型是值類型,但是可以被包裝成對應(yīng)的引用類型。·對象引用引用變量是一種特殊類型的變量,用于儲存對象的引用,而不是對象本身。引用變量紅充當(dāng)指針的角色,指向堆內(nèi)存中儲存的實(shí)際對象。這種設(shè)計(jì)提供了靈活性和對象的動(dòng)態(tài)性,允許在運(yùn)行的時(shí)候創(chuàng)建和銷毀對象。6.3

對象的創(chuàng)建和使用多個(gè)引用變量可以指向同一個(gè)對象。這意味著對一個(gè)引用變量所做的更改會(huì)影響到其他的引用變量引用的同一個(gè)對象。引用變量可以唄賦值為null值,表示不引用任何對象。Java是具有垃圾回收機(jī)制的,負(fù)責(zé)自動(dòng)釋放不在唄引用的對象的內(nèi)存。當(dāng)沒有任何引用指向一個(gè)對象是,該對象就成為補(bǔ)課訪問的,最終會(huì)被垃圾回收器回收。引用變量的一般格式如下圖。6.3

對象的創(chuàng)建和使用例6.2超群是一位圖書管理員。由于圖書管中的書籍比較多,為了方便管理,想到可以將這些書籍的信息放在一個(gè)空間里面。請編寫一個(gè)程序來創(chuàng)建一個(gè)類和對象,將書籍的信息放在對象里面。6.3

對象的創(chuàng)建和使用Java中,每個(gè)基本數(shù)據(jù)類型都有對應(yīng)的包裝類,用于將基本數(shù)據(jù)類型包裝成引用類型。這些包裝類提供了一些額外的方法和功能,同時(shí)也允許在需要引用類型的場合使用基本數(shù)據(jù)類型。下面是基本數(shù)據(jù)類型及其對應(yīng)的包裝類。1.整形:基本數(shù)據(jù)類型int;包裝類Integer。2.長整型:基本數(shù)據(jù)類型long;包裝類Long。3.浮點(diǎn)型:基本數(shù)據(jù)類型float;包裝類Float。4.雙精度浮點(diǎn)型:基本數(shù)據(jù)類型double;包裝類Double。5.字符型:基本數(shù)據(jù)類型char;包裝類Character。6.布爾型:基本數(shù)據(jù)類型boolean;包裝類Boolean。這些包裝類提供了豐富的方法,例如將字符串轉(zhuǎn)換為對應(yīng)類型的值、將字符串轉(zhuǎn)換為基本數(shù)據(jù)類型等。隨著Java的不斷發(fā)展,Java引入了自動(dòng)裝箱(autoboxing)和拆箱(unboxing)的特性,使得基本數(shù)據(jù)類型和其對應(yīng)的包裝類之間的轉(zhuǎn)換更加方便。系統(tǒng)會(huì)自動(dòng)的將基本數(shù)據(jù)類型和對應(yīng)的包裝類進(jìn)行轉(zhuǎn)換。二.引用類型04封裝6.4

封裝訪問修飾符封裝是面對對象編程中一項(xiàng)重要概念,指的是將一個(gè)類的實(shí)現(xiàn)細(xì)節(jié)隱藏起來,只向外界提供訪問和操作的接口。在Java中,封裝通過訪問修飾符和方法來實(shí)現(xiàn)。訪問修飾符用于控制類、接口、成員變量和方法的訪問權(quán)限。Java提供了四種修飾符,分別是:private、default、protected、public。1.private(私有的):修飾符表示的最小的訪問權(quán)限。被其修飾的成員只能在聲明其內(nèi)部訪問,其他任何類都不能直接訪問。2.default(默認(rèn),無修飾符):當(dāng)沒有使用任何訪問修飾符時(shí),成員的訪問權(quán)限為包級別,即在同一個(gè)包內(nèi)可見,蛋仔其他包中不可見。3.protected(受保護(hù)的):被protected修飾的成員可以在同一個(gè)包內(nèi)以及其子類中訪問,但在其他包中不可訪問。4.public(公共的):被public修飾的成員可以被任何類訪問,無論是同一個(gè)包內(nèi)還是其他包中。6.4

封裝封裝的優(yōu)勢這些訪問修飾符可以用于類的聲明、成員變量、方法以及構(gòu)造方法。選擇適當(dāng)?shù)脑L問修飾符可以幫助控制代碼的可見性,從而提高代碼的封裝性和安全性。訪問修飾符一般的使用格式如下圖封裝是面向?qū)ο缶幊痰囊粋€(gè)基本原則,通過類的封裝,可以帶來多方面的優(yōu)勢:一.信息隱藏:封裝允許將對象的內(nèi)部細(xì)節(jié)隱藏起來,只暴露必要的接口給外部。在Java中,通過使用私有修飾符,可以限成員變量和方法的訪問權(quán)限,從而實(shí)現(xiàn)信息的隱藏。這有助于提高代碼的安全性和可維護(hù)性。6.4

封裝二.模塊化和組織性:封裝有助于將代碼組織成模塊化的單元。類的封裝使得代碼更易于理解和維護(hù),每個(gè)類都扮演著特定的角色,有特定的職責(zé)。三.代碼復(fù)用:封裝可以促進(jìn)代碼的復(fù)用。通過創(chuàng)建具有獨(dú)立功能的類,這些類可以在不同的應(yīng)用程序種重復(fù)使用,從而減少了代碼的冗余。四.抽象和多態(tài):封裝支持抽象概念的建模。通過定義抽象類和接口,可以實(shí)現(xiàn)多態(tài)性,使得代碼更加靈活和可拓展。五.隔離變化:類的封裝有助于隔離變化。當(dāng)類的內(nèi)部實(shí)現(xiàn)發(fā)生變化時(shí),只需要修改類的內(nèi)部,而不會(huì)影響其他使用該類的代碼。這提高了代碼的可維護(hù)性和靈活性。6.4

封裝getter和setter方法在Java中,Getter和Setter方法是用于訪問和修改對象的私有字段(成員變量)的一種常見約定。這兩種方法允許通過類的公共接口訪問和修改對象的狀態(tài),同時(shí)保持對對象內(nèi)部實(shí)現(xiàn)的封裝。Getter和Setter的使用如下圖。05繼承6.5

繼承基類與派生類繼承是面向?qū)ο缶幊痰闹匾拍钪?。通過繼承,一個(gè)類可以使用另一個(gè)類的屬性和方法,從而實(shí)現(xiàn)代碼的重用和擴(kuò)展。在Java中,繼承可以通過使用extends關(guān)鍵字來實(shí)現(xiàn)。除此之外,還需要了解super關(guān)鍵字。基類與派生類是面向?qū)ο缶幊讨械膬蓚€(gè)關(guān)鍵概念,這兩個(gè)類構(gòu)成繼承關(guān)系。 基類也稱為父類、超類,是其他類的起點(diǎn),包含一組通用的屬性和方法。這些屬性和方法可以被其他類繼承和重用。基類的作用有提供通用的屬性和方法,供多個(gè)派生類共享;做為派生類的模版,減少代碼的重復(fù);構(gòu)建繼承層次結(jié)構(gòu),使代碼更有層次感、可拓展性和可維護(hù)性。一般使用class關(guān)鍵字定義基類并聲明基類的成員變量和方法。派生類也稱為子類,繼承一個(gè)或多個(gè)基類的屬性和方法,并可以在此基礎(chǔ)上添加新的屬性和方法,或者覆寫基類的方法??梢允褂胑xtends繼承基類,聲明派生類的成員變量和新增方法。6.5

繼承extends關(guān)鍵字extends關(guān)鍵字用于建立類之間的繼承關(guān)系,被用于聲明一個(gè)類是另一個(gè)類的子類(派生類),從而使得子類可以繼承父類的屬性和方法。extends關(guān)鍵字的一般用法如下圖.在使用extends關(guān)鍵字的時(shí)候,需要注意父類屬性和方法的訪問權(quán)限。子類可以繼承父類的非私有成員,如果成員是私有的,子類不可以直接訪問。6.5

繼承super關(guān)鍵字super關(guān)鍵字用于表示當(dāng)前對象的父類實(shí)例或調(diào)用父類的成員,在繼承關(guān)系中扮演著重要的角色,提供一種機(jī)制來訪問父類的構(gòu)造方法、成員變量和方法。super關(guān)鍵字的作用:1.調(diào)用父類的構(gòu)造方法:在子類的構(gòu)造方法中,使用super關(guān)鍵字來調(diào)用父類的構(gòu)造方法。這確保在創(chuàng)建子類對象時(shí),先執(zhí)行父類的初始化代碼。2.訪問父類的成員:使用super關(guān)鍵字來引用父類的成員,特別是在子類中存在與父類同名的成員時(shí),可以通過super指定訪問fulei的成員。3.調(diào)用父類的方法:在子類中覆寫父類的方法,但仍想調(diào)用父類的實(shí)現(xiàn)時(shí),可以使用super關(guān)鍵字。這在保留父類行為的基礎(chǔ)上,進(jìn)行特定于子類的擴(kuò)展或修改。4.在接口中使用:在接口中,super關(guān)鍵字可以用于引用接口的父接口。這在多接口繼承的情況下提供了一種機(jī)制來調(diào)用父接口的默認(rèn)方法。06多態(tài)6.6

多態(tài)方法重載和方法重寫可以用一個(gè)生活情景來幫助我們理解多態(tài)的概念:在生活中,與寵物互動(dòng)的時(shí)候,只需要知道這是一只寵物,而不用在意品種,可以調(diào)用寵物的共同行為,這些行為會(huì)更具實(shí)際寵物類型來執(zhí)行不同的動(dòng)作。這種思想被稱為多態(tài)。通過多態(tài),可以用一種通用的方法來處理不同類型的對象,使得代碼更加靈活。方法重載和方法重寫是兩個(gè)與多態(tài)性相關(guān)的概念,是多態(tài)性的兩種表現(xiàn)形式。一.方法重載方法重載是一種在同一個(gè)類中定義多個(gè)方法,這些方法具有相同的名字但具有不用的參數(shù)列表。編譯器會(huì)根據(jù)方法的參數(shù)類型、個(gè)數(shù)來選擇合適的方法。方法重載屬于編譯時(shí)多態(tài),也被成為靜態(tài)多態(tài)。方法重載的一般格式如下圖。6.6

多態(tài)注:returnType表示方法的返回類型;methodName是方法的名字;type1,、type2...是方法的參數(shù)列表,可以有多個(gè)或零個(gè)參數(shù)。6.6

多態(tài)二.方法重寫方法重寫是指子類重新實(shí)現(xiàn)父類中已有的方法。子類重寫的方法具有與父類相同的簽名(方法名、參數(shù)名、參數(shù)個(gè)數(shù))。運(yùn)行時(shí),根據(jù)實(shí)際對象的類型來調(diào)用相應(yīng)的方法,屬于運(yùn)行時(shí)多態(tài),也被成為動(dòng)態(tài)多態(tài)。方法重寫的一般格式如下圖。注:returnType表示方法的返回類型;methodName是方法的名字;type1,、type2...是方法的參數(shù)列表;@Override注釋表示這是一個(gè)重寫的方法,用于增加代碼可讀性,同時(shí)編譯器會(huì)檢查是否正確地進(jìn)行方法重寫。6.6

多態(tài)抽象類和接口抽象類接和口為多態(tài)提供實(shí)現(xiàn)的方法,讓代碼更加靈活和可拓展。一.抽象類抽象類是一個(gè)可以包含抽象方法的類,本身不能被實(shí)例化。抽象方法是沒有實(shí)現(xiàn)體的方法,留給子類去實(shí)現(xiàn)。抽象類可以包含非抽象方法,這些方法有默認(rèn)的實(shí)現(xiàn),也可以包含成員變量。抽象類和抽象方法可以只用abstract關(guān)鍵字來聲明。抽象類可以作為多態(tài)的基礎(chǔ),父類引用可以指向子類的對象。抽象類中的抽象方法在子類中必須被實(shí)現(xiàn),這就實(shí)現(xiàn)了多態(tài)。子類可以提供不同的實(shí)現(xiàn),通過父類引用調(diào)用時(shí)會(huì)根據(jù)實(shí)際對象類型來執(zhí)行相應(yīng)的方法。6.6

多態(tài)二.接口接口是一種抽象類型,定義了一組方法的簽名,但沒有提供方法的實(shí)現(xiàn)。類通過實(shí)現(xiàn)接口來實(shí)現(xiàn)特定的行為。接口可以使用implements關(guān)鍵字來實(shí)現(xiàn)。接口可以被用作多態(tài)的基礎(chǔ),一個(gè)接口類型的引用可以指向?qū)崿F(xiàn)了該接口的任意類的對象。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,從而具有多個(gè)類型的引用。這使得對象可以通過多個(gè)角度被看待,增強(qiáng)了靈活性??傮w而言,抽象類和接口都為多態(tài)提供了實(shí)現(xiàn)的手段,使得代碼更具有通用選哪個(gè)和可維護(hù)性。通過多態(tài),可以更靈活地處理不同類型的對象,提高代碼的可拓展性。07靜態(tài)成員6.7

靜態(tài)成員類變量靜態(tài)成員就像一個(gè)類的全明星,不會(huì)與具體的對象沾邊,而是專心和整個(gè)類打交道。靜態(tài)變量就是類的大家共享的寶藏,靜態(tài)方法像是一個(gè)能讓整個(gè)類聽到的公告板,而靜態(tài)常量就是那個(gè)一勁兒擰不動(dòng)的東西,一旦設(shè)定就不再改變。這些靜態(tài)成員在類的內(nèi)部攪和熱鬧,不用等到對象出場,就能在程序的舞臺上大顯身手。類變量是屬于整個(gè)類而不是類的實(shí)例的變量,也稱為靜態(tài)變量,用關(guān)鍵字static聲明,并且通常在類中的頂層位置,方法之外定義。與實(shí)例變量不同,類變量只有一份拷貝,被所有該類的實(shí)例所共享。類變量有以下幾個(gè)特點(diǎn):(1)共享性:所以該類的實(shí)例共享相同的類變量。(2)在類加載時(shí)初始化:類變量在類加載時(shí)被初始化,而不是在創(chuàng)建類的實(shí)例時(shí),會(huì)存在類的整個(gè)生命周期,直到程序結(jié)束。(3)通過類名訪問:類變量屬于類本身而不是實(shí)例,可以使用類名直接訪問,無需創(chuàng)建類的實(shí)例。6.7

靜態(tài)成員類方法類方法與類變量相似,類方法屬于類而不是類的實(shí)例的方法。類方法不依賴類的實(shí)例,可以直接通過類名調(diào)用,二不需要?jiǎng)?chuàng)建類的對象。類方法有以下的特點(diǎn):(1)靜態(tài)性:類方法是靜態(tài)的,不依賴特定的對象的實(shí)例,可以在沒有創(chuàng)建類實(shí)例的情況下調(diào)用。(2)無法訪問實(shí)例變量:由于類方法不屬于任何特定的實(shí)例,無法直接訪問實(shí)例變量,只能訪問類變量和其他靜態(tài)內(nèi)容。(3)在類加載時(shí)初始化:與類變量類似,類方法在類加載時(shí)被初始化,存在整個(gè)生命周期。6.7

靜態(tài)成員靜態(tài)塊靜態(tài)塊在類加載時(shí)值會(huì)執(zhí)行一次,而且是在其他靜態(tài)成員變量初始化之前執(zhí)行的。這意味著可以在靜態(tài)塊中進(jìn)行一些與類本身有關(guān)的操作,例如初始化靜態(tài)成員變量、加載靜態(tài)資源、執(zhí)行靜態(tài)方法等。以一種比如的方式類說,確保在正式開始演出時(shí)一切井然有序。這包括檢查靜態(tài)成員的狀態(tài),為類的運(yùn)行環(huán)境進(jìn)行設(shè)置,或者執(zhí)行一些必要的初始化任務(wù)。所以,靜態(tài)塊充當(dāng)了類加載時(shí)的啟動(dòng)儀式,確保了類在程序中的良好啟動(dòng)。靜態(tài)塊的主要用途是在類加載時(shí)執(zhí)行一些初始化操作,通常用于初始化靜態(tài)成員變量或執(zhí)行與類本身相關(guān)的靜態(tài)操作。靜態(tài)塊只執(zhí)行一次,位于類體中,使用關(guān)鍵字static聲明。例6.6小明和爸爸媽媽決定使用一個(gè)家庭賬戶來追蹤所有花費(fèi)。請?jiān)O(shè)計(jì)一個(gè)家庭記賬的Java類,并在余額不足的時(shí)候給出提示。6.7

靜態(tài)成員08高級主題6.8

高級主題Java中的高級主題包括多線程和并發(fā)編程,允許同時(shí)處理多個(gè)任務(wù);設(shè)計(jì)模式,提供了解決軟件設(shè)計(jì)常見問題的經(jīng)驗(yàn)性方案;Lambda表達(dá)式和函數(shù)式編程,使代碼更具簡潔性和可讀性;反射機(jī)制允許在運(yùn)行時(shí)獲取和操作類的信息。這些概念要求開發(fā)者有深入的理解和經(jīng)驗(yàn),幫助構(gòu)建高效、可維護(hù)且靈活的Java應(yīng)用程序。下面,介紹一下枚舉;內(nèi)部類;反射·枚舉枚舉是Java中的一種特殊數(shù)據(jù)類型,用于表示一組常量。在枚舉中,每個(gè)常量都是枚舉類型的一個(gè)實(shí)例。枚舉常常用于定義一組相關(guān)的常量,例如表示星期、顏色、狀態(tài)等。枚舉類型的優(yōu)點(diǎn)包括代碼更加清晰、類型安全、易于閱讀和維護(hù)。此外,枚舉類型還可以包含構(gòu)造方法、實(shí)例方法和字段。在Java中,枚舉不僅用于表示一組常量,還可以用于實(shí)現(xiàn)單例模式、有限狀態(tài)機(jī)等場景。6.8

高級主題例6.7編寫一個(gè)程序來定義一個(gè)枚舉類型Day表示一周的每一天(SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY)。在主類EnumExample中,使用枚舉常量WEDNESDAY表示今天是星期三,并輸出該信息。然后,通過遍歷枚舉值,輸出一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論