版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
面向?qū)ο螅╦ava中的設計模式)知識點1面向?qū)ο蟪醪絡ava是完全面向?qū)ο蟮木幊陶Z言1)什么是Object(對象「Object:本意:東西,是指具體事務的實例(東西)面向?qū)ο?就是面向客觀事物之間的聯(lián)系"想著對象寫代碼”2)面向?qū)ο蟮膸讉€關鍵概念:類:指一類事物,eg車,人,花對象:指的事物的一個具體實例,一個對象,eg劉老師的那輛結(jié)婚的大28自行車,門口的那顆向日葵多態(tài):事物在不同的情況下有不同的變化eg美女一〉劉詩詩/高圓圓/楊玉環(huán)/蒼井空花錢,花心,花費,花朵打人,打卡,打醬油,打車,打假封裝:任何對象實例都盡量封裝繼承:概念的繼承關系抽象:2類與對象關系1)類:用來描述事物類型,指的一類事物,eg人類,車類,植物類2)對象:就用來描述事物的一個實例,一個對象eg劉蒼松/劉英謙/楊嘉,劉老師的那輛結(jié)婚的大28自行車3)類與對象的聯(lián)系和區(qū)別:類代表是一類事物,是對象的模板對象代表是一個事物的實例,是類的一個實現(xiàn)3類的組成1)類現(xiàn)實中:類{特征;行為;)2)java中的類:特征屬性:變量行為:方法class類名{屬性方法案例:objectl.Demol/PersonclassPerson{屬性(變量):姓名,年齡,性別〃數(shù)據(jù)類型屬性名Stringname;intage;Stringsex;方法返回值類型(void)方法名(形參列表){方法體4創(chuàng)建對象1)創(chuàng)建對象的格式:a)對象的聲明:? 變量的定義:數(shù)據(jù)類型變量名b)對象的創(chuàng)建:對象名=new構(gòu)造方法2)訪問對象中的屬性/方法a)訪問屬性:對象名.屬性名b)訪問方法:對象名.方法名3)對象屬性的默認值:對象當new以后,在堆當中創(chuàng)建存儲空間里,jdk會自動初始匕一般基本類型數(shù)據(jù)是"0",引用類型默認就是null5引用類型變量以及對象在內(nèi)存中創(chuàng)建的過程l)java中的內(nèi)存管理與分配棧:就是java中一塊使用的內(nèi)存區(qū)域,使用的方式:先進后出/后進先出棧:存儲局部變量堆:也是Java中一塊使用的內(nèi)存區(qū)域,使用的方法:隨機的分配堆:一般new的對象2)變量的類型變量分為:基本類型和引用類型基本類型:在內(nèi)存中占用空間,就是基本數(shù)據(jù)類型的大小,值就是基本數(shù)據(jù)類型的值引用類型:引用類型的值,就是在堆當中new生成對象的地址值,可以通過引用類型中的地址值找到在堆當中的對象6案例:objectl.Demo2Box/Box長方體類:Box,屬性:長(length),寬(width),高(height)方法:求體積(volume)(長*寬*高)根據(jù)Box來創(chuàng)建一個Box對象,并求其體積7構(gòu)造方法(構(gòu)造器)1)作用:用來描述對象的創(chuàng)建過程(就是用來創(chuàng)建對象,給屬性賦初始值,或者做其他的初始化操作)eg:月餅制作(構(gòu)造方法)月餅的模板 >月餅(對象)餡(參數(shù))2)jave中的構(gòu)造方法:在類當中聲明,方法名跟類名一致,而且構(gòu)造方法沒有返回值,沒有返回值類型當創(chuàng)建對象的時候,就立刻調(diào)用構(gòu)造方法,來給對象初始化egclassStudent{intage;Stringname;publicStudent(intage,Stringname){this.age=age;=name;)}3)對象的實例化過程new:在堆當中創(chuàng)建對象的過程a)根據(jù)類的屬性在堆當中分配存儲對象的空間,并且先自動給這些屬性賦默認值b)根據(jù)參數(shù)來調(diào)用構(gòu)造方法(把默認值變成對象要賦的值)c)new返回的是對象的堆當中引用地址4)this關鍵字:this:當前,指代當前對象(對當前對象的引用)a)企業(yè)開發(fā)當中,構(gòu)造方法的參數(shù)的名字跟屬性名最好一致,需要是用this來區(qū)分this.屬性名〃當前這個對象的屬性this.方法名〃當前這個對象的方法this(參數(shù)):跟構(gòu)造方法重載結(jié)合使用,可以調(diào)用本類中其他的構(gòu)造方法,必須要寫到當前構(gòu)造方法中的第1行參數(shù):要跟調(diào)用的構(gòu)造方法的參數(shù)相匹配5)構(gòu)造方法重載(參數(shù)不同的構(gòu)造方法)一個類當中很多個構(gòu)造方法,根據(jù)參數(shù)的不同,來選擇調(diào)用不同的構(gòu)造方法案例:objectl.Car/Demo3Car設計Car類,屬性:name,color,money,speed方法:行駛寫兩個構(gòu)造方法,第1個構(gòu)造方法,要把所有的屬性都初始化,第2個構(gòu)造構(gòu)造方法,只把name/color初始化6)默認的構(gòu)造方法:a)java類當中必須要有構(gòu)造方法b)當new的是必然會調(diào)用構(gòu)造方法c)如果類當中沒有寫任何構(gòu)造方法的話,則系統(tǒng)會默認的給我們創(chuàng)建一個空參的構(gòu)造方法如果我們寫了構(gòu)造方法,則會覆蓋系統(tǒng)默認提供的構(gòu)造方案例:objectl.Demo4class類名{屬性構(gòu)造方法方法}案例:objectl.Demo5Point/Point在平面繪圖坐標系中的一個點PointPoint:屬性:x,y構(gòu)造方法:1)一般的點(x,y)2)對角線的點(x)-->this(x,y)方法:1)當前點到原點的距離2)當前點到另外一個點的距離8)方法重載:1)方法重載a)方法名字必須一樣b)方法的參數(shù)不同(參數(shù)的類型或個數(shù))2)方法簽名的概念:方法簽名=方法名+參數(shù)類型列表java中不能存在相同的方法簽名的方法方法重載:方法名一樣,方法簽名不同的方法(面試的時候,少用)方法重載:方法名一樣,方法參數(shù)不一樣(面試經(jīng)常問)方法類型和個數(shù)一樣不是重載方法,變量名字跟方法重載沒有任何關系3)方法重載中通過參數(shù)的不同,來調(diào)用/區(qū)分不同的方法4)方法重載是多態(tài)一種的表現(xiàn)形式:eg打人,打水,打醬油,打麻將System.out.println(l);//intSystem.out.println(1.6);//doubleSystem.out.println。'盧象升");〃StringSystem.out.println(true);//boolean方法重載在我們程序隨處可見要求:方法的功能必須要相似java中參數(shù)的傳遞(有點兒難)java中的參數(shù)傳遞的一般規(guī)則:基于值的傳遞,基本數(shù)據(jù)類型的變量,把■到形參當中;引用類型的變量,把堆當中專遞到形參當中(堆當中對象的首地址),這樣的話形參跟實參都指向堆當中的同一個對象案例:object2.Demol(引用類型)案例:object2.Demo2(基本類型)案例:object2.Demo3Point/Pointpoint(x,y)圓屬性:圓心(point(x,y)) 半徑r構(gòu)造方法:1)參數(shù):point(x,y)r2)參數(shù):x,y,r方法:1)求圓的面積:Math.Pl*r*r2)判斷一個點是否在圓上(這個點到圓心的距離大于r就不在這個圓上,小于等于r在這個圓上)分析:判斷點的問題轉(zhuǎn)化為判斷點到圓心(點)的距離問題distance()3繼承案例:extendsl.Person/Student人類:Person 父類屬性:姓名,性別,年齡方法:說話學生:Student子類屬性:姓名,性別,年齡,學號,分數(shù)方法:說話學習1)子類繼承了父類的屬性和方法格式:class子類extends父類{〃父類的屬性/方法子類獨有的方法/屬性)2)子類不能繼承父類的構(gòu)造方法3)java中繼承是單繼承Java中永遠都是單繼承,但是可以多層次的單繼承(一個類只能有一個父類)案例:extendsl.Demo54繼承中構(gòu)造方法的使用〃1)子類的構(gòu)造方法,一定要調(diào)用父類的構(gòu)造方法2)子類不能繼承構(gòu)造方法3)如果父類中沒有無參的構(gòu)造方法,則必須在子類的構(gòu)造方法中明確的調(diào)用父類中的有參數(shù)的構(gòu)造方法4)super:曾經(jīng)的,過去的,可以在子類的構(gòu)造方法中使用super來調(diào)用父類中的帶參數(shù)的構(gòu)造方法案例:extendsl.Demo6戶類繼承父類的出現(xiàn)問題5方法重寫(覆蓋)/變量隱藏都出現(xiàn)繼承當中1)變量隱藏:子類定義的變量和父類中變量的名字一樣,則父類中變量會被子類中的變量給覆蓋案例:extends2.Demo72)super.屬性名:可以調(diào)用被覆蓋的父類中的屬性3)方法的重寫(覆蓋):子類定義的方法:方法名,參數(shù)和返回值類型跟父類中的方法一致了,則父類的方法被子類的該方法給重寫(覆蓋)案例:extends2.Demo86this和super(this的老婆super的女友)this:當前的,現(xiàn)在的super:曾經(jīng)的,過去的this.屬性:當前對象的屬性this.方法:當前對象的方法super.屬性:父類中的屬性super.方法:父類中的方法3)this(參數(shù)):調(diào)用本類中的其他的構(gòu)造方法super(參數(shù)):調(diào)用父類中的構(gòu)造方法7重載和重寫重載:一個類當中,方法的名字相同,方法的參數(shù)不同功能:是根據(jù)參數(shù)的不同來調(diào)用不同的方法重寫:父類和子類當中,而且方法的名字相同,方法的參數(shù)相同功能:子類的方法覆蓋父類中繼承過來的同名同參方法1父類聲明指向子類對象(上轉(zhuǎn)型對象)案例:extends3.Demol1)父類聲明指向子類對象,該對象可以訪問子類重寫父類的方周2)父類聲明指向子類對象,不可以訪問子類獨有的方法3)父類聲明指向子類對象,可以強制轉(zhuǎn)化為子類對象2question案例案例:questionl.*classSingleQuestionextendsQuestion(}classMultiQuestionextendsQ.uestion{}SingleQuestion的對象和MultiQuestion的對象放到同一個數(shù)組里面?(數(shù)組大小的要固定,保存同一個類型的數(shù)據(jù))解決方法:1)創(chuàng)建一個數(shù)組:Questionf]question=newQuestion[2];(用這個父類來創(chuàng)建數(shù)組)2)給數(shù)組添加元素:question[0]=newSingleQuestion(...);questionfl]=newMultiQuestion(...);(父類聲明指向子類對象)案例:questionl.QuestionDemo33static:靜態(tài)l)static修飾(關鍵字),可以用來修飾:變量,方法,語句塊,類2)static修飾變量:屬于類級別的變量,是在類加載的時候直接加載到內(nèi)存當中,所有的類的對象可以共享同一個靜態(tài)變量特點:用static修飾變量,我們叫做靜態(tài)變量,該變量跟類有關,跟對象無關訪問靜態(tài)變量:類名.靜態(tài)變量名案例:staticl.Demo4/Student3)static修飾方法:屬于類的方法,所有該類的對象都可以訪問該方法在靜態(tài)方法里不可以調(diào)用實例變量。但是可以調(diào)用靜態(tài)變量特點:用static修飾方法,我們叫做靜態(tài)方法,該方法跟類有關,跟對象無關方法靜態(tài)方法:類名.靜態(tài)方法名案例:staticl.Demo54)代碼塊:用{語句}的java的語句塊,每次在創(chuàng)建對象的時候,自動調(diào)用5)靜態(tài)代碼塊:使用static修飾的代碼塊,不管該類創(chuàng)建多少個對象,靜態(tài)代碼塊只調(diào)用1次,在jdbc,Hibernate,Spring中使用及其頻繁案例:staticl.Demo6
4訪問權限控制(一)不同包可以類內(nèi)部 不同包可以public 可以 可以用public修飾的變量,方法,類private 可以 不可以 不可以用private修飾的變量,方法,類重點:private修飾的任何方法/屬性,只能在本類的內(nèi)部訪問,外界無法訪問案例:demol.Demo7企業(yè)開發(fā)中,一般能使用private修飾都盡可能的使用private修飾健議)屬性,般使用private方法一般使用public訪問權限控制:體現(xiàn)java中的封裝特性2月2月17日面向?qū)ο笾苋罩R點:1訪問權限控制(訪問權限控制修飾符)(二)類內(nèi)包內(nèi)子類任意public可以可以可以可以protected可以可以可以不默認可以可以不不private可以不不不案例:demo3.Koo/Demoldemo4.Kool/Demo22javaBean(POJO)不是語法,是企業(yè)開發(fā)為了開發(fā)方便,習慣性的編碼規(guī)范特點:1)類必須要放到一個包下面2)屬性最好定義為私有的,必須要有能夠訪問該屬性的方法3)給訪問屬性的方法,命名的規(guī)范,屬性名:xxx,訪問的方法的名字必須:一般屬性: getXxx()setXxx(參數(shù))boolean屬性:isXxx() setXxx(參數(shù))4)該類必須要實現(xiàn)可序列化接口(i。再說)5)javaBean必須要有空參的構(gòu)造方法案例:javaBeanl.Demo3/Person好處:調(diào)用的時候方便3final:最終的,最后的修飾類,方法,屬性1)用final修飾的類,表示這個類不可以再被繼承,叫最終類案例:finall.Demo4一般jdk的工具類,大部分都是用final修飾的,我們寫的類,一定不要使用final修飾,strutsl.x/2.x,hibernate3.2/3.5/4.0,spring2.5/3.0底層實現(xiàn)全部是基于動態(tài)代理實現(xiàn),如果用final修飾我們寫的類,使用不了動態(tài)代理技術(以后再說)2)用final修飾方法,這個方法不可以被重寫案例:finall.Demo53)用final修飾變量,該變量初始化以后,不可以再被修改a:用final修飾的局部變量b:用final修飾的方法參數(shù)c:用final修飾的引用類型的變量(這個對象不可以修改,但是對象的屬性可以修改)案例:finall.Demo64)常量:值永遠都不在發(fā)生變化固定的寫法:(public)staticfinal數(shù)據(jù)類型常量名=值;一般在屬性中定義常量名:最好字母全部大寫案例:finall.Demo74抽象類一不是具體的類(有的方法沒有的實現(xiàn))1)抽象的方法一只有行為的概念,沒有具體的實現(xiàn)只有方法的聲明/沒有方法的實現(xiàn),需要靠子類來實現(xiàn)格式:publicabstract返回值類型方法名字(參數(shù)列表);格式:abstrctclass類名{■3)抽象類的子類必須要實現(xiàn)所有的抽象方法4)抽象類只能被繼承,一個具體的類來繼承一個抽象類,并且實現(xiàn)其方法5)■ 實例化,(小?以仞用父,小此指向?,對,案例:圖形類(Shape):抽象類屬性:point(x,y)方法:1)求該圖形的面積2)a)判斷一個點Point是否在圖形的上面b)判斷一個點(x,y)是否在圖形的上面圓(Circle):具體類,繼承圖形類,并且要實現(xiàn)其方法長方形企業(yè)開發(fā)當中,程序員分為兩類:設計人員:項目經(jīng)理/架構(gòu)師編碼人員:高級程序員,組長,中級程序員,初級程序員案例:設計一個類:Car基本屬性:name,color,speed抽象方法:啟動,行駛,剎車(只有方法的聲明,沒有方法的實現(xiàn))Car的子類:來實現(xiàn)這些抽象的方法Bmw/QQ案例:absl.Car/Bmw/QQ5接口1)一般認為是一個特殊的抽象類2)特點:接口中的方法全部都是抽象方法,接口中的屬性全是常量3)對比接口格式和抽象類格式抽象類的格式abstractclass類名{屬性構(gòu)造方法一般方法抽象方法)接口的格式interface接口名{常量抽象方法)發(fā)現(xiàn)一個問題:接口的格式更適合于設計,現(xiàn)在的企業(yè)開發(fā)當中,大部分都使用接口來做設計,抽象類使用較少,而且接口及其靈活案例:interfacel.DemolO4)接口中的常量和抽象方法的簡寫常量:數(shù)據(jù)類型常量名=值;抽象方法:返回值類型方法名字(參數(shù));5)接口不能夠直接的實例化,可以讓實現(xiàn)類來實例化,接口跟實現(xiàn)類直接關系就是一種特殊的繼承關系6)接口可以使用父類聲明指向子類對象(web開發(fā)中經(jīng)常使用)7)Java中類的繼承是比較單一的,尤其功能方法:因為是類是單繼承接口可以實現(xiàn)多繼承,一個類可以實現(xiàn)多個接口,近似的實現(xiàn)了多繼承案例:interfacel.Demoll2月18日周一面向?qū)ο驤2SE:String集合類異常處理時間類io流多線程網(wǎng)絡編程反射知識點:接口(二)接口之間可以多繼承案例:interface2.Demolcard案例:Card屬性:花色:CLUB(梅花),DIAMOND(方塊),HEART(紅桃),SPADE(黑桃),JOKER點數(shù):THREE=0;FOUR=1;FIVE=2;SIX=3;SEVEN=4;EIGHT=5;NINE=6;TEN=7;JACK=8;//JQUEEN=9;〃QKING=10;//KACE=11;//ADEUCE=12;//2BLACK=13;〃小王COLOR=14;〃大王案例:cardl.Card/CardDemo2Object:java體系中最底層的一個類,Object是所有類的父類,所有的類都間接或直接的繼承于Object案例:objectl.Demo3l)Object:toString(),hashCode(),equals。必須掌握2)toString():用來描述當前對象的文本(String)信息,一般是默認調(diào)用,返回的結(jié)果包名.類名@hashcode,結(jié)果沒用,必須重寫(要把該類的對象顯示出來)重寫toString():把屬性信息描述出來案例:objectl.Demo43)equals():判斷兩個對象是否相等案例J:objectl.Demo5/Point(1)比較兩個對象是否相等比較的是引用值是否相等(堆當中的對象的地址是否相同)"equals()":Object根上的類,equals比較就是但是我們認為的相等,一般指的屬性,所以equals跟比較有關的時候,必須重寫(2)重寫equals。方法,原則equals在Object類中聲明,默認的比較規(guī)則是:比較引用值建議覆蓋,實現(xiàn)對象的比較(比較對象的狀態(tài):屬性,就是比較對象的數(shù)據(jù))。覆蓋規(guī)則:a自反.:對于任何非空引用值x,x.equals(x)都應返回trueob對稱性:對于任何非空引用值x和y,當且僅當y.equals(x)返回true時,x.equals(y)才應返回true。c傳遞性:對于任何非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)應返回true。d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考地理一輪復習第十五章城市、產(chǎn)業(yè)與區(qū)域發(fā)展課件
- 宗祠落成典禮活動合同(2篇)
- 房屋買賣合同(2篇)
- 趙州橋電子課件
- 語文培訓 課件
- 第13課 《唐詩五首》-八年級語文上冊同步備課精講(統(tǒng)編版)
- 第10課 《蘇武傳》-高二語文大單元教學同步備課(統(tǒng)編版選擇性必修中冊)
- 西京學院《運營管理》2022-2023學年第一學期期末試卷
- 西京學院《圖形設計》2022-2023學年第一學期期末試卷
- 2025屆甘肅新高考之“3 1 2”-了解“兩依據(jù)一參考”關注綜素評價課件
- 氣液兩相流講稿
- 北師大版(2019)高中英語必修第三冊單詞表默寫練習(英譯中、中譯英)
- 2023鐵礦石 釷含量的測定偶氮胂Ⅲ分光光度法
- 《中國藥典》2023年版目錄
- 第五章一元一次方程微專題-應用題表格類訓練 (北師大版數(shù)學七年級上冊)
- 人工湖清理淤泥施工方案
- 改革開放簡史智慧樹知到課后章節(jié)答案2023年下北方工業(yè)大學
- 40萬豪華裝修清單
- 淺談新課標下的小學英語課堂教學
- 江蘇省住宅物業(yè)委托服務合同(示范文本)
- 我的家鄉(xiāng)-黑龍江-英語PPT
評論
0/150
提交評論