




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
面向?qū)ο螅╦ava中的設(shè)計模式)
知識點
1面向?qū)ο蟪醪?/p>
java是完全面向?qū)ο蟮木幊陶Z言
1)什么是Object(對象「Object:本意:東西,是指具體事務的實例
(東西)
面向?qū)ο?就是面向客觀事物之間的聯(lián)系
"想著對象寫代碼"
2)面向?qū)ο蟮膸讉€關(guān)鍵概念:
類:指一類事物,eg車,人,花
對象:指的事物的一個具體實例,一個對象,
eg劉老師的那輛結(jié)婚的大28自行車,門口的那顆向日葵
多態(tài):事物在不同的情況下有不同的變化
eg美女一>劉詩詩/高圓圓/楊玉環(huán)/蒼井空
花錢,花心,花費,花朵
打人,打卡,打醬油,打車,打假
封裝:任何對象實例都盡量封裝
繼承:概念的繼承關(guān)系
抽象:
2類與對象關(guān)系
1)類:用來描述事物類型,指的一類事物,
eg人類,車類,植物類
2)對象:就用來描述事物的一個實例,一個對象
eg劉蒼松/劉英謙/楊幕,
劉老師的那輛結(jié)婚的大28自行車
3)類與對象的聯(lián)系和區(qū)別:
類代表是一類事物,是對象的模板
對象代表是一個事物的實例,是類的一個實現(xiàn)
3類的組成
1)類現(xiàn)實中:
類{
特征;
行為;
)
2)java中的類:
特征:屬性:變量
行為:方法
class類名{
屬性
方法
)
案例:objectl.Demol/Person
classPerson{
屬性(變量):姓名,年齡,性別
〃數(shù)據(jù)類型屬性名
Stringname;
intage;
Stringsex;
返回值類型(void)方法名(形參列表){
方法體
HI
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”,引用類型默認就是null
5引用類型變量以及對象在內(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)造方法,來給對象初始化
eg
classStudent{
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關(guān)鍵字:
this:當前,指代當前對象(對當前對象的引用)
a)企業(yè)開發(fā)當中,構(gòu)造方法的參數(shù)的名字跟屬性名最好一致,
需要是用this來區(qū)分
b)this.屬性名〃當前這個對象的屬性
this.方法名〃當前這個對象的方法
c)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
設(shè)計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.Demo4
class類名{
屬性
構(gòu)造方法
方法
)
案例:objectl.Demo5Point/Point
在平面繪圖坐標系中的一個點Point
Point:屬性: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ù)一樣不是重載方法,變量名字跟方法重載沒有任
何關(guān)系
3)方法重載中通過參數(shù)的不同,來調(diào)用/區(qū)分不同的方法
4)方法重載是多態(tài)一種的表現(xiàn)形式:
eg打人,打水,打醬油,打麻將
System.out.println(l);//int
System.out.println(1.6);//double
System.out.println("盧象升");〃String
System.out.println(true);//boolean
方法重載在我們程序隨處可見
要求:方法的功能必須要相似
1java中參數(shù)的傳遞(有點兒難)
java中的參數(shù)傳遞的一般規(guī)則:基于值的傳遞,基本數(shù)據(jù)類型的
變量,把■到形參當中;引用類型的變量,把堆當中
傳遞到形參當中(堆當中對象的首地址),這樣
的話
形參跟實參都指向堆當中的同一個對象
案例:object2.Demol(引用類型)
案例:object2.Demo2(基本類型)
2案例:object2.Demo3Point/Point
point(x,y)
圓
屬性:圓心(point(x,y))半徑r
構(gòu)造方法:
1)參數(shù):point(x,y)r
2)參數(shù):x,y,r
方法:
1)求圓的面積:Math,PI*r*r
2)判斷一個點是否在圓上(這個點到圓心的距離大于r
就不在這個圓上,小于等于r在這個圓上)
分析:判斷點的問題轉(zhuǎn)化為判斷點到圓心
(點)的距離問題
distance()
3繼承
案例:extendsl.Person/Student
人類:Person父類
屬性:姓名,性別,年齡
方法:說話
學生:Student
子類
屬性:姓名,性別,年齡,學號,分數(shù)
方法:說話學習
1)子類繼承了父類的屬性和方法
格式:class子類extends父類{
〃父類的屬性/方法
子類獨有的方法/屬性
)
2)樂類不能繼7長父類的構(gòu)造方法
3)java中繼承是單繼承
Java中永遠都是單繼承,但是可以多層次的單繼承(一個類只
能有一個父類)
案例:extendsl.Demo5
4繼承中構(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
空參的構(gòu)造方法,避免
子類繼承父類的出現(xiàn)問題
5方法重寫(覆蓋)/變量隱藏都出現(xiàn)繼承當中
1)變量隱藏:子類定義的變量和父類中變量的名字一樣,則父類
中變量會被子類中的變量給覆蓋
案例:extends2.Demo7
2)super.屬性名:可以調(diào)用被覆蓋的父類中的屬性
3)方法的重寫(覆蓋):子類定義的方法:方法名,參數(shù)和返回值
類型跟父類中的方法一致了,則父類的方法被子類的該方法給
重寫
(覆蓋)
案例:extends2.Demo8
6this和super(this的老婆super的女友)
1)this:當前的,現(xiàn)在的
super:曾經(jīng)的,過去的
2)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.Demol
1)父類聲明指向子類對象,該對象可以訪問子類重寫父類的方
1_______________
2)父類聲明指向子類對象,不可以訪問子類獨有的方法
3)父類聲明指向子類對象,可以強制轉(zhuǎn)化為子類對象
2question案例
案例:questionl.*
classSingleQuestionextendsQuestion{
)
classMultiQuestionextendsQuestion{
)
SingleQuestion的對象和MultiQuestion的對象放到
同一個數(shù)組里面?
(數(shù)組大小的要固定,保存同一個類型的數(shù)據(jù))
解決方法:
1)創(chuàng)建一個數(shù)組:Question口question=newQuestion⑵;
(用這個父類來創(chuàng)建數(shù)組)
2)給數(shù)組添加元素:
question[0]=newSingleQuestion(...);
question[l]=newMultiQuestion(...);
(父類聲明指向子類對象)
案例:questionl.QuestionDemo3
3static:靜態(tài)
l)static修飾(關(guān)鍵字),可以用來修飾:變量,方法,語句塊,類
2)static修飾變量:屬于類級別的變量,是在類加載的時候直接加
載到
內(nèi)存當中,所有的類的對象可以共享同一個靜態(tài)變量
特點:用static修飾變量,我們叫做靜態(tài)變量,該變量跟類有關(guān),
跟對象無關(guān)
訪問靜態(tài)變量:類名.靜態(tài)變量名
案例:staticl.Demo4/Student
3)static修飾方法:屬于類的方法,所有該類的對象都可以訪問該
方法
在靜態(tài)方法里不可以調(diào)用實例變量。但是可以調(diào)用靜態(tài)變量
特點:用static修飾方法,我們叫做靜態(tài)方法,該方法跟類有關(guān),
跟對象無關(guān)
方法靜態(tài)方法:類名.靜態(tài)方法名
案例:staticl.Demo5
4)代碼塊:用{語句}的java的語句塊,每次在創(chuàng)建對象的時候,自
動調(diào)用
5)靜態(tài)代碼塊:使用static修飾的代碼塊,不管該類創(chuàng)建多少個
對象,靜態(tài)代碼塊只調(diào)用1次,在jdbc,Hibernate,Spring中使用
及其頻繁
案例:staticl.Demo6
4訪問權(quán)限控制(一)
類內(nèi)部包內(nèi)部不同包
public可以可以可以
用public修飾的變量,方法,類
private可以不可以不可以
用private修飾的變量,方法,類
重點:private修飾的任何方法/屬性,只能在本類的內(nèi)部訪問,外界
無法訪問
案例:demol.Demo7
企業(yè)開發(fā)中,一般能使用private修飾都盡可能的使用private修飾
健議)
屬性般使用private
方法一般使用public
訪問權(quán)限控制:體現(xiàn)java中的封裝特性
2月17日周日
面向?qū)ο?/p>
知識點:
1訪問權(quán)限控制(訪問權(quán)限控制修飾符乂二)
類內(nèi)包內(nèi)子類任意
public可以可以可以可以
protected可以可以可以不
默認可以可以不不
private可以不不不
案例:demo3.Koo/Demol
demo4.Kool/Demo2
2javaBean(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)用的時候方便
3fina上最終的,最后的
修飾類,方法,屬性
1)用final修飾的類,表示這個類不可以再被繼承,叫最終類
案例:finall.Demo4
一般jdk的工具類,大部分都是用final修飾的,我們寫的類,一定
不
要使用final修飾,strutsLx/2.x,hibernate3.2/3.5/4O
spring2.5/3.0底層實現(xiàn)全部是基于動態(tài)代理實現(xiàn),如果用final修
飾
我們寫的類,使用不了動態(tài)代理技術(shù)(以后再說)
2)用final修飾方法,這個方法不可以被重寫
案例:finall.Demo5
3)用final修飾變量,該變量初始化以后,不可以再被修改
a:用final修飾的局部變量
b:用final修飾的方法參數(shù)
c:用final修飾的引用類型的變量(這個對象不可以修改,但是
對象的屬性可以修改)
案例:finall.Demo6
4)常量:值永遠都不在發(fā)生變化
固定的寫法[public)staticfinal數(shù)據(jù)類型常量名=值;
一般在屬性中定義
常量名:最好字母全部大寫
案例:finall.Demo7
4抽象類一不是具體的類(有的方法沒有的實現(xiàn))
1)抽象的方法一只有行為的概念,沒有具體的實現(xiàn)
格式:publicabstract返回值類型方法名字(參數(shù)列表);
格式:abstrctclass類名{
■
3)抽象類的子類必須要實現(xiàn)所有的抽象方法
4)抽象類只能被繼承,一個具體的類來繼承一個抽象類,并且
實現(xiàn)其方法
5)抽象類不能直接實例化,但可以使用父類小,:J類對象
案例:
圖形類(Shape):抽象類
屬性:point(x,y)
方法⑴求該圖形的面積
2)
a)判斷一個點Point是否在圖形的上面
b)判斷一個點(x,y)是否在圖形的上面
圓(Circle):具體類,繼承圖形類,并且要實現(xiàn)其方法
長方形
企業(yè)開發(fā)當中,程序員分為兩類:
設(shè)計人員:項目經(jīng)理/架構(gòu)師
編碼人員:高級程序員,組長,中級程序員,初級程序員
案例:設(shè)計一個類:
Car
基本屬性:name,color,speed
抽象方法:啟動,行駛,剎車(只有方法的聲明,沒有方法的實現(xiàn))
Car的子類:來實現(xiàn)這些抽象的方法
Bmw/QQ
案例:absl.Car/Bmw/QQ
5接口
1)一般認為是一個特殊的抽象類
2)特點:接口中的方法全部都是抽象方法,接口中的屬性全是常
量
3)對比接口格式和抽象類格式
抽象類的格式
abstractclass類名{
屬性
構(gòu)造方法
一般方法
抽象方法
)
接口的格式
interface接口名{
常量
抽象方法
)
發(fā)現(xiàn)一個問題:接口的格式更適合于設(shè)計,現(xiàn)在的企業(yè)開發(fā)當中,
大部分都使用接口來做設(shè)計,抽象類使用較少,而且接口及其靈活
案例:interfacel.DemolO
4)接口中的常量和抽象方法的簡寫
常量:數(shù)據(jù)類型常量名=值;
抽象方法:返回值類型方法名字(參數(shù));
5)接口不能夠直接的實例化,可以讓實現(xiàn)類來實例化,接口跟實
現(xiàn)類
直接關(guān)系就是一種特殊的繼承關(guān)系
6)接口可以使用父類聲明指向子類對象(web開發(fā)中經(jīng)常使用)
7)Java中類的繼承是比較單一的,尤其功能方法:因為是類是單
繼承
接口可以實現(xiàn)多繼承,一個類可以實現(xiàn)多個接口,近似的實
現(xiàn)了多繼承
案例:interfacel.Demoll
2月18日周一
面向?qū)ο?/p>
J2SE:
String
集合類
異常處理
時間類
io流
多線程
網(wǎng)絡編程
反射
知識點:
1接口㈡
接口之間可以多繼承
案例:interface2.Demol
2card案例:
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;//J
QUEEN=9;//Q
KING=10;//KACE=11;//ADEUCE=12;//2
BLACK=13;〃小王COLOR=14;〃大王
案例:cardl.Card/CardDemo2
3Object:
java體系中最底層的一個類,Object是所有類的父類,
所有的類都間接或直接的繼承于Object
案例:objectl.Demo3
l)Object:toString(),hashCode(),equals。必須掌握
2)toString():用來描述當前對象的文本(String)信息,一般
是默認調(diào)用,返回的結(jié)果包名.類名@hashcode,結(jié)果沒用,必須
重寫(要把該類的對象顯示出來)
重寫toString。:把屬性信息描述出來
案例:objectl.Demo4
3)equals():判斷兩個對象是否相等
案例:objectl.Demo5/Point
⑴比較兩個對象是否相等
■力比較的是引用值是否相等(堆當,的對象的地址是否相同)
"equals()":Object根上的類,equals比較就是但是
我們認為的相等,一般指的屬性,所以equals跟比較有關(guān)的時候,
必須重寫
(2)重寫equals。方法,原則
equals在Object類中聲明,默認的比較規(guī)則是:比較引用值
建議覆蓋,實現(xiàn)對象的比較(比較對象的狀態(tài):屬性,就是比較
對象
的數(shù)據(jù))。
覆蓋規(guī)則:
a自反性,對于任何非空引用值x,x.equals(x)
都應返回true。
b對稱性:對于任何非空引用值x和y,當且僅當
y.equals(x)返回true時,x.equals(y)
才應返回true。
c傳遞性:對于任何非空引用值x、y和z,如果
x.equals(y)返回true,并且y.equals(z)返回
true,那么x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 產(chǎn)品代理經(jīng)銷合同樣本
- 礦石開采及供貨合同樣本
- 商業(yè)租賃合同安全隱患預防措施
- 銷售合同書(苗木花卉)
- 度中外合資企業(yè)勞動合同模板
- 能源工程合同轉(zhuǎn)讓合同范本
- 倉儲物流設(shè)備租賃合同范例
- 協(xié)議合同范本簡單的5篇
- 山地開發(fā)項目承包合同2025
- 2025年貨運代理勞務分包合同
- 新教材統(tǒng)編版高中語文古代詩歌閱讀講與練 22 從七大常見題材入手把握詩歌內(nèi)容情感
- 2024-2025學年天津市和平區(qū)天津一中高三綜合測試英語試題試卷含解析
- 2024-2030年中國地鐵廣告行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 高等職業(yè)學校人工智能技術(shù)應用專業(yè)實訓教學條件建設(shè)標準
- 2024年水利安全員(B證)考試題庫-上(單選題)
- 2025年高考生物總復習:減數(shù)分裂和受精作用
- 輻射防護試題庫+答案
- DWI高信號常見疾病的鑒別診斷課件-2
- 酸堿滴定分析與討論實驗報告
- 2024醫(yī)療器械運輸合同范本
- 血管內(nèi)超聲在冠狀動脈疾病中應用的中國專家共識(全文)
評論
0/150
提交評論