日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

编程体系结构(06):Java面向对象

發(fā)布時(shí)間:2025/3/17 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程体系结构(06):Java面向对象 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里

一、基礎(chǔ)概念

1、面向?qū)ο蟾拍?/strong>

面向?qū)ο缶幊痰闹饕枷胧前褬?gòu)成問題的各個(gè)事務(wù)分解成各個(gè)對(duì)象,建立對(duì)象的目的不是為了完成一個(gè)步驟,而是為了描敘一個(gè)事物在整個(gè)解決問題的步驟中的行為。

2、類和對(duì)象

對(duì)象:真實(shí)存在唯一的事物;在應(yīng)用程序中對(duì)象是數(shù)據(jù)和動(dòng)作的結(jié)合體,不僅能夠進(jìn)行操作,同時(shí)還能夠記錄下操作結(jié)果。

類:抽象的概念,實(shí)際就是對(duì)某種類型事物的共性屬性與行為的抽取;例如User[名稱.年齡.性別]類用來描述用戶的基礎(chǔ)信息。

Java開發(fā)中如何理解面向?qū)ο?#xff1a;構(gòu)建合適的對(duì)象接口API體系,創(chuàng)建合適的對(duì)象,解決合適的問題,例如JDK的API已經(jīng)定義好的類,通過這些類創(chuàng)建對(duì)象直接使用;通過自定義類來創(chuàng)建對(duì)象使用,在MVC中模式中,不同業(yè)務(wù)功能創(chuàng)建不同的接口和類系統(tǒng)。

3、屬性和方法

類中變量

位置區(qū)別:

  • 成員變量是定義在方法之外,類內(nèi);
  • 局部變量是定義在方法之內(nèi)。

作用區(qū)別:

  • 成員變量的作用是用于描述一類事物的公共屬性的。
  • 局部變量的作用就是提供一個(gè)變量給方法內(nèi)部使用而已。

初始值區(qū)別:

  • 成員變量是有默認(rèn)的初始值。
  • 局部變量是沒有默認(rèn)的初始值的,必須要先初始化才能使用。

生命周期:

  • 隨著對(duì)象的創(chuàng)建而存在,隨著對(duì)象的消失而消失。
  • 局部變量在調(diào)用了對(duì)應(yīng)的方法時(shí)執(zhí)行到了創(chuàng)建該變量的語句時(shí)存在,局部變量一旦出了自己的作用域那么馬上從內(nèi)存中消失。

類中方法

對(duì)一個(gè)類功能的具體描述,可能是類方法或者對(duì)象方法;

  • 類方法,又叫靜態(tài)方法,使用類直接調(diào)用,常用工具類;
  • 對(duì)象方法,又叫實(shí)例方法,使用類對(duì)象調(diào)用,常見API方法;

構(gòu)造方法

構(gòu)造函數(shù)的作用是用來給對(duì)應(yīng)的對(duì)象進(jìn)行初始化處理,沒有返回值類型的,構(gòu)造函數(shù)的函數(shù)名必須要與類名一致,如果一個(gè)類沒有顯式的聲明一個(gè)構(gòu)造方法,那么java編譯器會(huì)為該類添加一個(gè)無參的構(gòu)造函數(shù)的,如果一個(gè)類已經(jīng)顯式的寫上一個(gè)構(gòu)造方法時(shí),那么java編譯器則不會(huì)再為該類添加一個(gè)無參的構(gòu)造方法,構(gòu)造函數(shù)是可以在一個(gè)類中以重載的形式存在多個(gè)。

4、接口

接口是一個(gè)特殊的類,接口的成員變量默認(rèn)的修飾符為:public-static-final,接口中的方法都是抽象的方法,默認(rèn)的修飾符:public-abstract,接口不能創(chuàng)建對(duì)象且沒有構(gòu)造方法的,接口是給類去實(shí)現(xiàn)時(shí)使用的,非抽象類實(shí)現(xiàn)接口,必須要把接口中所有方法全部實(shí)現(xiàn)。

接口的作用:程序的解耦,定義實(shí)現(xiàn)類的約束規(guī)范,如果需要拓展特別功能,也可以基于接口形式實(shí)現(xiàn)。

類與接口之間關(guān)系:多實(shí)現(xiàn)關(guān)系;接口與接口之間關(guān)系:多繼承關(guān)系。

5、重載與重寫

方法重寫

父類的功能無法滿足子類的需求時(shí),可以進(jìn)行方法的重寫即子父類使用同名的函數(shù),且子類重寫的方法使用@Override注解,這里存在繼承的關(guān)系。

  • 方法名與形參列表必須一致;
  • 子類的權(quán)限修飾符必須要大于或者等于父類的權(quán)限修飾符;
  • 子類的返回值類型必須要小于或者等于父類的返回值類型;
  • 子類拋出的異常類型要小于或者等于父類拋出的異常類型;

方法重載

在一個(gè)類中存在兩個(gè)或者兩個(gè)以上的同名函數(shù),稱作為方法重載,函數(shù)名要一致,形參列表不一致(形參的個(gè)數(shù)或形參的類型不一致)。

6、包與權(quán)限

權(quán)限修飾符

權(quán)限修飾符就是控制被修飾的成員的范圍可見性,分為:public、private、protected、default(沒有修飾)。在不同包下面只有public 與 protected 可以訪問,而且protected必須是在繼承關(guān)系下才能夠訪問。

包package

包可以理解為計(jì)算機(jī)系統(tǒng)中的文件夾,用來解決類名重復(fù)產(chǎn)生沖突的問題,包名全部小寫,語句必須位于java文件中中第一個(gè)語句。

二、基本特征

封裝

把類中內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)進(jìn)行隱藏,只暴露對(duì)外的接口,例如實(shí)際開發(fā)場景中一般實(shí)體類的所有成員屬性(成員變量)都要封裝起來,可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問,適當(dāng)?shù)姆庋b可以讓程序代碼更容易理解與維護(hù),加強(qiáng)安全性。

繼承

在現(xiàn)有父類的基礎(chǔ)上在重新構(gòu)建一個(gè)新類即子類,通過子類對(duì)象可以訪問父類非私有的成員變量和成員方法,以及重寫父類中的非私有成員方法,繼承的作用就是能提高代碼的復(fù)用性。

多態(tài)

多態(tài)指一個(gè)對(duì)象可以具備多種形態(tài),例如:父類的引用類型變量指向了子類的對(duì)象;接口的引用類型變量指向了接口實(shí)現(xiàn)類的對(duì)象;這種情況是存在于繼承或者實(shí)現(xiàn)關(guān)系中,多態(tài)情況下,子父類存在同名的成員變量時(shí),訪問的都是父類的成員,除了在同名非靜態(tài)函數(shù)時(shí)才是訪問子類的。

三、常用關(guān)鍵字

1、This關(guān)鍵字

this關(guān)鍵字代表了所屬函數(shù)的調(diào)用者對(duì)象,如果存在同名成員變量與局部變量時(shí),在方法內(nèi)部默認(rèn)是訪問局部變量的數(shù)據(jù),可以通過this關(guān)鍵字指定訪問成員變量的數(shù)據(jù),在一個(gè)構(gòu)造函數(shù)中可以調(diào)用另外一個(gè)構(gòu)造函數(shù)初始化對(duì)象。

2、Static關(guān)鍵字

static修飾成員變量:如果有數(shù)據(jù)需要被共享給所有對(duì)象使用時(shí),那么就可以使用static修飾。

static修飾成員函數(shù):該靜態(tài)方法不依賴于任何對(duì)象就可以進(jìn)行訪問,非靜態(tài)成員方法/變量都必須依賴具體的對(duì)象才能夠被調(diào)用。

static修飾代碼塊:static關(guān)鍵字用來包裝靜態(tài)代碼塊以提升程序性能,靜態(tài)代碼塊可以置于類中的任何地方,在類初次被加載的時(shí)候,會(huì)依次執(zhí)行一次每個(gè)靜態(tài)代碼塊。

3、Super關(guān)鍵字

super關(guān)鍵字代表了父類空間的引用,子父類存在著同名的成員時(shí),在子類中默認(rèn)是訪問子類的成員,可以通過super關(guān)鍵字指定訪問父類的成員;創(chuàng)建子類對(duì)象時(shí),默認(rèn)會(huì)先調(diào)用父類無參的構(gòu)造方法,可以通過super關(guān)鍵字指定調(diào)用父類的構(gòu)造方法。

4、Instanceof關(guān)鍵字

instanceof關(guān)鍵字的作用:判斷一個(gè)對(duì)象是否屬于指定的類別,對(duì)象與指定的類別必須要存在繼承或者實(shí)現(xiàn)的關(guān)系。在強(qiáng)制類型轉(zhuǎn)換之前通常會(huì)使用該關(guān)鍵字先判斷,然后在進(jìn)行轉(zhuǎn)換。

5、Final關(guān)鍵字

final修飾類:表明該類不能被繼承,final類中的成員變量可以根據(jù)需要設(shè)為final,但是要注意final類中的所有成員方法都會(huì)被隱式地指定為final方法。

final修飾方法:鎖定方法防止任何繼承類修改它的含義;第二個(gè)原因是效率,父類的final方法是不能被子類所覆蓋的。

final修飾變量:成員變量被標(biāo)識(shí)為常量,只能被賦值一次,賦值后值不再改變,當(dāng)函數(shù)的參數(shù)類型聲明為final時(shí),說明該參數(shù)是只讀型的。

6、Abstract關(guān)鍵字

abstract修飾類:該抽象類不能被實(shí)例化,抽象類與接口的不同之處,接口中不能有實(shí)例方法去實(shí)現(xiàn)業(yè)務(wù)邏輯,而抽象類中可以有實(shí)例方法,并實(shí)現(xiàn)業(yè)務(wù)邏輯,抽象類不能使用final關(guān)鍵字修飾,因?yàn)閒inal修飾的類是無法被繼承,而對(duì)于抽象類來說就是需要通過繼承去實(shí)現(xiàn)抽象方法。

abstract修飾方法:抽象方法沒有方法主體,與接口方法有點(diǎn)類似,抽象方法不能用private修飾,因?yàn)槌橄蠓椒ū仨毐蛔宇悓?shí)現(xiàn),抽象方法也不能用static修飾,抽象類.抽象方法這樣的操作沒有意義。

四、場景分析

1、設(shè)計(jì)模式

面向?qū)ο笈c設(shè)計(jì)模式是之前幾年很火熱的概念,面試時(shí)必問的問題,在編程中想用好設(shè)計(jì)模式,前提理解面向?qū)ο髾C(jī)制,都是對(duì)問題的高度向上抽象封裝,向下逐層解決實(shí)現(xiàn),提高代碼的復(fù)用性、可讀性、靈活性、可維護(hù)性強(qiáng),最主要是格調(diào)高。

2、IO流體系

如果想理解面向?qū)ο蠛驮O(shè)計(jì)模式的代碼,在Java中可以重點(diǎn)讀讀IO流體系的API,頂級(jí)接口,向下實(shí)現(xiàn),包裝類,擴(kuò)展類,是真的把這兩大理念用到極致了,當(dāng)然IO流最為文件處理的核心,也值得讀讀源碼。

3、MVC開發(fā)模式

在MVC的開發(fā)模式中,業(yè)務(wù)層接口,業(yè)務(wù)層實(shí)現(xiàn);數(shù)據(jù)庫接口,數(shù)據(jù)訪問實(shí)現(xiàn),也是面向?qū)ο蟮淖罨A(chǔ)用法接口與接口的實(shí)現(xiàn)類。

五、源代碼地址

GitHub·地址 https://github.com/cicadasmile GitEE·地址 https://gitee.com/cicadasmile

推薦閱讀:編程體系整理

序號(hào)項(xiàng)目名稱GitHub地址GitEE地址推薦指數(shù)
01Java描述設(shè)計(jì)模式,算法,數(shù)據(jù)結(jié)構(gòu)GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆☆
02Java基礎(chǔ)、并發(fā)、面向?qū)ο蟆eb開發(fā)GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆
03SpringCloud微服務(wù)基礎(chǔ)組件案例詳解GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆
04SpringCloud微服務(wù)架構(gòu)實(shí)戰(zhàn)綜合案例GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆☆
05SpringBoot框架基礎(chǔ)應(yīng)用入門到進(jìn)階GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆
06SpringBoot框架整合開發(fā)常用中間件GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆☆
07數(shù)據(jù)管理、分布式、架構(gòu)設(shè)計(jì)基礎(chǔ)案例GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆☆
08大數(shù)據(jù)系列、存儲(chǔ)、組件、計(jì)算等框架GitHub·點(diǎn)這里GitEE·點(diǎn)這里☆☆☆☆☆

總結(jié)

以上是生活随笔為你收集整理的编程体系结构(06):Java面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。