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