摘要:前言是面對(duì)對(duì)象的語(yǔ)言,因此有必要多帶帶紀(jì)錄下對(duì)象的各種定義和理解。面對(duì)對(duì)象基本概述概述是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。面對(duì)對(duì)象開(kāi)發(fā)就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。面對(duì)對(duì)象設(shè)計(jì)其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。
前言
java是面對(duì)對(duì)象的語(yǔ)言,因此有必要多帶帶紀(jì)錄下對(duì)象的各種定義和理解。
面對(duì)對(duì)象,主要包括:面向?qū)ο笏枷?,?lèi)與對(duì)象及其使用,對(duì)象的內(nèi)存圖,成員變量和局部變量的區(qū)別,匿名對(duì)象,封裝(private),this關(guān)鍵字,構(gòu)造方法,static關(guān)鍵字。
面對(duì)對(duì)象基本概述概述:是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。
面對(duì)對(duì)象開(kāi)發(fā):就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。
面對(duì)對(duì)象設(shè)計(jì):其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。
面對(duì)對(duì)象特征:封裝,繼承,多態(tài)
類(lèi)與對(duì)象的關(guān)系:
(1)類(lèi):一組相關(guān)的屬性和行為的集合 (2)對(duì)象:是該類(lèi)事物的具體體現(xiàn)
匿名對(duì)象:
(1)就是沒(méi)有名字的對(duì)象,是對(duì)象的一種簡(jiǎn)化表示形式 (2)匿名對(duì)象的兩種使用情況:1、對(duì)象調(diào)用方法僅僅一次的時(shí)候 2、作為實(shí)際參數(shù)傳遞類(lèi)的相關(guān)概述:
Student s = new Student();在內(nèi)存中做了哪些事情?
(1)加載Student.class文件進(jìn)入內(nèi)存 (2)在棧空間為s開(kāi)辟空間 (3)在堆內(nèi)存為學(xué)生對(duì)象開(kāi)辟空間 (4)對(duì)學(xué)生對(duì)象的成員變量進(jìn)行默認(rèn)初始化 (5)對(duì)學(xué)生對(duì)象的成員變量進(jìn)行顯示初始化 (6)通過(guò)構(gòu)造方法對(duì)學(xué)生對(duì)象的成員變量賦值 (7)學(xué)生對(duì)象初始化完畢,把對(duì)象地址賦值給s變量
類(lèi) 基本包括:繼承、多態(tài)、抽象類(lèi)、接口、包和導(dǎo)包、權(quán)限修飾符、內(nèi)部類(lèi)
類(lèi)的繼承概述:多個(gè)類(lèi)中存在相同屬性和行為時(shí),將這些內(nèi)容抽取到多帶帶一個(gè)類(lèi)中,那么多個(gè)類(lèi)無(wú)需再定義這些屬性和行為,只要繼承這個(gè)類(lèi)即可。
通過(guò)extends這個(gè)關(guān)鍵字可以實(shí)現(xiàn)類(lèi)與類(lèi)到繼承
多帶帶的這個(gè)類(lèi)稱(chēng)為父類(lèi)或者基類(lèi)、超類(lèi),這多個(gè)類(lèi)可以稱(chēng)為子類(lèi)或者派生類(lèi)
有了繼承后,我們定義一個(gè)類(lèi)的時(shí)候,可以在一個(gè)已經(jīng)存在的類(lèi)的基礎(chǔ)上,定義自己的新成員
好處:
(1)提高了代碼的復(fù)用性 (2)提高代碼的維護(hù)性 (3)讓類(lèi)與類(lèi)之間產(chǎn)生了關(guān)系,是多態(tài)的前提 (4)類(lèi)的一個(gè)弊端就是,類(lèi)的耦合性很強(qiáng)
注意事項(xiàng):
(1)子類(lèi)只能繼承父類(lèi)所有非私有成員(成員方法和成員變量) (2)字類(lèi)不能繼承父類(lèi)的構(gòu)造方法,但是可以通過(guò)super關(guān)鍵字訪問(wèn)父類(lèi)的構(gòu)造方法 (3)不要為類(lèi)部分功能而去繼承
繼承中構(gòu)造方法的關(guān)系:
(1)子類(lèi)中所有的構(gòu)造方法都默認(rèn)會(huì)父類(lèi)中空參數(shù)的構(gòu)造方法 (2)因?yàn)樽宇?lèi)會(huì)繼承父類(lèi)的數(shù)據(jù),可能還會(huì)使用父類(lèi)的數(shù)據(jù)。所以,子類(lèi)初始化之前,一定要先完成父類(lèi)數(shù)據(jù)的初始化 (3)每一個(gè)構(gòu)造方法的第一條語(yǔ)句默認(rèn)是:super() (4)如果父類(lèi)中沒(méi)有構(gòu)造方法怎么辦: 【1】子類(lèi)通過(guò)super去顯示調(diào)用父類(lèi)其他的帶參的構(gòu)造方法 【2】子類(lèi)通過(guò)this調(diào)用本類(lèi)的其他構(gòu)造方法 【3】一定要注意,super()后者this()必須出現(xiàn)在第一條語(yǔ)句中,否則,就會(huì)有父類(lèi)數(shù)據(jù)的多次初始化
方法重寫(xiě):
(1)概述:子類(lèi)中出現(xiàn)了一個(gè)和父類(lèi)一摸一樣的方法聲明,也被稱(chēng)為方法覆蓋,方法復(fù)寫(xiě) (2)父類(lèi)中的私有方法不能被重寫(xiě) (3)子類(lèi)重寫(xiě)父類(lèi)方法時(shí),訪問(wèn)權(quán)限不能更低 (4)父類(lèi)靜態(tài)方法,子類(lèi)也必須通過(guò)靜態(tài)方法進(jìn)行重寫(xiě)幾個(gè)關(guān)鍵字:static、super、final
static關(guān)鍵字:
(1)可以修飾成員變量和成員方法 (2)特點(diǎn): 【1】隨著類(lèi)的加載而加載 【2】?jī)?yōu)先于對(duì)象存在 【3】被類(lèi)的所有對(duì)象共享 【4】可以通過(guò)類(lèi)名調(diào)用 (3)注意事項(xiàng): 【1】在靜態(tài)方法中是沒(méi)有this關(guān)鍵字的 【2】靜態(tài)方法只能訪問(wèn)靜態(tài)的成員變量和靜態(tài)的成員方法 (4)靜態(tài)變量和成員變量的區(qū)別: 【1】靜態(tài)變量屬于類(lèi),所以也成為類(lèi)變量;成員變量屬于對(duì)象,所以也稱(chēng)為實(shí)例變量 【2】靜態(tài)變量存儲(chǔ)在方法區(qū)的靜態(tài)區(qū),成員變量存儲(chǔ)在堆內(nèi)存中 【3】靜態(tài)變量隨著類(lèi)的加載而加載,隨著類(lèi)的消失而消失;成員變量隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失 【4】靜態(tài)變量可以通過(guò)類(lèi)名調(diào)用,也可以通過(guò)對(duì)象調(diào)用;成員變量只能通過(guò)對(duì)象名調(diào)用
super關(guān)鍵字:
(1)super和this關(guān)鍵字的用法很像,this代表本類(lèi)對(duì)應(yīng)的引用,super代表父類(lèi)存儲(chǔ)空間的標(biāo)識(shí)(可以理解為父類(lèi)的引用) (2)使用super來(lái)引用父類(lèi)的成分,用this來(lái)引用當(dāng)前對(duì)象
final關(guān)鍵字:
(1)final關(guān)鍵字是最終的意思,可以修飾類(lèi)、成員變量、成員方法 (2)修飾類(lèi),類(lèi)不能被繼承 (3)修飾變量,變量就變成了常量,只能被賦值一次 (4)修飾方法,方法不能被重寫(xiě)多態(tài)
概述:某一個(gè)事物,在不同時(shí)刻表現(xiàn)出來(lái)的不同狀態(tài)
多態(tài)的前提和體現(xiàn):有繼承關(guān)系,有方法重寫(xiě),有父類(lèi)引用直接指向子類(lèi)對(duì)象
好處:
(1)提高程序的維護(hù)性(由繼承保證) (2)提高程序的擴(kuò)展性(由多態(tài)保證)
弊端:不能訪問(wèn)子類(lèi)特有功能
抽象類(lèi)概述:一個(gè)沒(méi)有方法體的方法應(yīng)該定義為抽象方法,而類(lèi)中如果有抽象方法,該類(lèi)必須定義為抽象類(lèi)
特點(diǎn):
(1)抽象類(lèi)和抽象方法必須是由abstract關(guān)鍵字修飾 (2)抽象類(lèi)不一定有抽象方法,有抽象方法的類(lèi)一定是抽象類(lèi) (3)抽象類(lèi)不能實(shí)例化 (4)那么,抽象類(lèi)如何實(shí)例化?按照多態(tài)的方法,由具體的子類(lèi)實(shí)例化 (5)抽象類(lèi)的子類(lèi),要么是抽象類(lèi),要么重寫(xiě)抽象類(lèi)中的所有抽象方法
抽象類(lèi)成員特點(diǎn):
(1)成員變量可以是變量,也可以是常量 (2)有構(gòu)造方法,但是不能實(shí)例化。那么構(gòu)造方法的作用是什么?用戶(hù)子類(lèi)訪問(wèn)父類(lèi)數(shù)據(jù)的初始化 (3)可以有抽象方法,限定子類(lèi)必須完成某些動(dòng)作 (4)也可以有非抽象方法,提高代碼復(fù)用性 (5)抽象方法必須為public或protected(因?yàn)槿绻莗rivate,則不能被子類(lèi)繼承,子類(lèi)便無(wú)法實(shí)現(xiàn)該方法),缺省情況下默認(rèn)為public接口
概述:英文成為interface,軟件工程中,接口泛指供別人調(diào)用的方法或函數(shù),它是對(duì)行為的抽象
接口特點(diǎn):
(1)使用關(guān)鍵字interface表示:interface 接口名{} (2)類(lèi)實(shí)現(xiàn)接口用implements表示:class 類(lèi)名 implements 接口名{} (3)接口不能實(shí)現(xiàn)實(shí)例化,但是可以按照多態(tài)的方式,由具體的子類(lèi)實(shí)例化 (4)接口的子類(lèi):要么是抽象類(lèi),要么重寫(xiě)接口中的所有抽象方法
接口成員特點(diǎn):
(1)成員變量:只能是常量,默認(rèn)修飾符是public、static、final (2)沒(méi)有構(gòu)造方法,因?yàn)榻涌谥饕菙U(kuò)展功能的,而沒(méi)有具體存在 (3)接口的成員方法只能是抽象方法,默認(rèn)修飾符是public、abstract類(lèi)與類(lèi)、類(lèi)與接口、接口與接口關(guān)系
類(lèi)與類(lèi):繼承關(guān)系,只能單繼承,但是可以多層繼承
類(lèi)與接口:實(shí)現(xiàn)關(guān)系,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)。還可以在繼承一個(gè)類(lèi)多同時(shí)實(shí)現(xiàn)多個(gè)接口
接口與接口:繼承關(guān)系,可以單繼承,也可以多繼承
抽象類(lèi)與接口的區(qū)別:接口是對(duì)動(dòng)作的抽象,抽象類(lèi)是對(duì)根源的抽象
抽象類(lèi)表示的是這個(gè)對(duì)象是什么,而接口表示的是這個(gè)對(duì)象能做什么
抽象類(lèi)與接口都不能被實(shí)例化,如果要實(shí)例化,抽象類(lèi)變量必須指向?qū)崿F(xiàn)所有抽象方法的子類(lèi)對(duì)象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類(lèi)對(duì)象
抽象類(lèi)要被子類(lèi)繼承,接口要被類(lèi)實(shí)現(xiàn)
接口只能做方法聲明,抽象類(lèi)中可以做方法聲明,也可做方法實(shí)現(xiàn)
接口中定義的變量只能是公共的靜態(tài)常量,抽象類(lèi)中的變量是普通變量
抽象類(lèi)里邊的抽象方法必須被子類(lèi)所實(shí)現(xiàn),如果子類(lèi)不能全部實(shí)現(xiàn)父類(lèi)抽象方法,那么該子類(lèi)只能是抽象類(lèi)。同理,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如果不能全部實(shí)現(xiàn)接口方法,那么該類(lèi)也只能是抽象類(lèi)
抽象方法只能聲明,不能實(shí)現(xiàn)。接口是設(shè)計(jì)的結(jié)果,抽象類(lèi)是重構(gòu)的結(jié)果
接口可以繼承接口,并可繼承多接口,但是類(lèi)只能單繼承
抽象類(lèi)可以有具體的方法和屬性,接口只能有抽象方法和不可變常量
當(dāng)你關(guān)注一個(gè)事物的本質(zhì)的時(shí)候,用抽象類(lèi);當(dāng)你關(guān)注一個(gè)操作的時(shí)候用接口。
包:package概述:其實(shí)就是文件夾,對(duì)類(lèi)進(jìn)行分類(lèi)管理
定義:package 包名
注意事項(xiàng):
(1)package語(yǔ)句必須是程序的第一條可執(zhí)行的代碼 (2)package語(yǔ)句在一個(gè)java文件中只能有一個(gè) (3)如果沒(méi)有package,默認(rèn)表示無(wú)包名
帶包的類(lèi)的編譯和運(yùn)行:
(1)手動(dòng)式: 【1】javac編譯當(dāng)前類(lèi)文件 【2】手動(dòng)建立包對(duì)應(yīng)的文件夾 【3】把編譯生成的class文件放到上一步建立的文件夾下 【4】通過(guò)java命令執(zhí)行,需要帶包的名稱(chēng)執(zhí)行:java testpackage.HelloWorld (2)自動(dòng)式: 【1】javac編譯的時(shí)候帶-d參數(shù)執(zhí)行:javac -d .HelloWorld.java 【2】通過(guò)java命令執(zhí)行,和手動(dòng)式一樣
導(dǎo)包:
(1)概述:不同包下的類(lèi)之間的訪問(wèn),我們發(fā)現(xiàn),每次使用不同包下的類(lèi)的時(shí)候,都需要加包的全路經(jīng),比較麻煩。這時(shí),java提供了導(dǎo)包功能 (2)導(dǎo)包格式:import 包名.類(lèi)名內(nèi)部類(lèi)
概述:把類(lèi)定義在其他類(lèi)的內(nèi)部,這個(gè)類(lèi)就被成為內(nèi)部類(lèi)
訪問(wèn)特點(diǎn):
(1)內(nèi)部類(lèi)可以直接訪問(wèn)外部類(lèi)的成員,包括私有 (2)外部類(lèi)要想內(nèi)部類(lèi)的成員,必須創(chuàng)建對(duì)象
內(nèi)部類(lèi)位置:
(1)按照內(nèi)部類(lèi)在類(lèi)中定義的位置不同,可以分為兩種格式:成員位置(成員內(nèi)部類(lèi)),局部位置(局部?jī)?nèi)部類(lèi)) (2)成員內(nèi)部類(lèi): 【1】常見(jiàn)修飾符:private,static 【2】被靜態(tài)修飾的成員內(nèi)部類(lèi)只能訪問(wèn)外部類(lèi)的靜態(tài)成員 (3)局部?jī)?nèi)部類(lèi): 【1】可以直接訪問(wèn)外部類(lèi)的成員 【2】可以創(chuàng)建內(nèi)部類(lèi)對(duì)象,通過(guò)對(duì)象調(diào)用內(nèi)部類(lèi)方法,來(lái)使用局部?jī)?nèi)部類(lèi)功能 【3】局部?jī)?nèi)部類(lèi)訪問(wèn)局部變臉必須用final修飾。因?yàn)榫植孔兞繒?huì)隨著方法的調(diào)用完畢而消失,這個(gè)時(shí)候,局部對(duì)象并沒(méi)有立馬從堆內(nèi)存消失,還要使用那個(gè)變量。為了讓數(shù)據(jù)還能繼續(xù)被使用,就用final修飾,這樣,在堆內(nèi)存里面存儲(chǔ)的其實(shí)是一個(gè)常量值。 (4)匿名內(nèi)部類(lèi): 【1】就是內(nèi)部類(lèi)的簡(jiǎn)化寫(xiě)法 【2】格式:new 類(lèi)名或接口名(){} 【3】前提:存在一個(gè)類(lèi)或者接口,這里的類(lèi)可以是具體的普通的類(lèi),也可以是抽象類(lèi) 【4】本質(zhì):是一個(gè)繼承了類(lèi)或者實(shí)現(xiàn)了接口的子類(lèi)匿名對(duì)象 【5】可以說(shuō),匿名內(nèi)部類(lèi)其實(shí)就是一個(gè)子類(lèi)匿名對(duì)象
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76928.html
摘要:在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢年才能攢出一線城市房子的首付,以這樣的收入水平,基本上沒(méi)法扎根。 簡(jiǎn)單算一筆賬,目前小公司Java后端工資一般是1萬(wàn)出頭,年薪普遍在20萬(wàn)以下。在不考慮通脹和工資增長(zhǎng)的情況下,除去吃喝需要攢30年才能攢出一線城市房子的首付,以這樣的收入水平,基本...
摘要:寄存器本書(shū)沒(méi)有做很多說(shuō)明,不做解釋棧,這個(gè)區(qū)域在的區(qū)域里面。有一個(gè)這個(gè)指針的上移來(lái)刪除釋放內(nèi)存,下移來(lái)存儲(chǔ)。重點(diǎn)就是這里面常常用來(lái)存儲(chǔ)對(duì)象。常量存儲(chǔ),這個(gè)區(qū)域在的區(qū)域。本章的聯(lián)系很明顯。 引言 從這一章的標(biāo)題我們就可以很容易知道這章主要講的還是作為Java語(yǔ)言最大的一個(gè)特性(面向?qū)ο螅?。這個(gè)跟自己開(kāi)始學(xué)習(xí)Java不同,一開(kāi)始學(xué)習(xí)一門(mén)語(yǔ)言都是直接從語(yǔ)法開(kāi)始,但是這本書(shū)是從Java的思想開(kāi)...
閱讀 3823·2021-11-24 09:39
閱讀 1827·2021-11-02 14:41
閱讀 828·2019-08-30 15:53
閱讀 3489·2019-08-29 12:43
閱讀 1204·2019-08-29 12:31
閱讀 3097·2019-08-26 13:50
閱讀 804·2019-08-26 13:45
閱讀 996·2019-08-26 10:56