摘要:一什么是類什么是對(duì)象現(xiàn)實(shí)世界是有很多對(duì)象組成的,基于對(duì)象抽出了類對(duì)象是真實(shí)存在的單個(gè)的個(gè)體,類是一類個(gè)體,類型類別類中可以包括所有對(duì)象所共有的特征屬性變量所有對(duì)象所共有的行為方法一個(gè)類可以創(chuàng)建多個(gè)對(duì)象,同一個(gè)類的多個(gè)
一:什么是類 什么是對(duì)象
1.1現(xiàn)實(shí)世界是有很多對(duì)象組成的,基于對(duì)象抽出了類
1.2對(duì)象是真實(shí)存在的單個(gè)的個(gè)體,類是一類個(gè)體,類型/類別
1.3類中可以包括:
所有對(duì)象所共有的特征屬性----變量 所有對(duì)象所共有的行為--------方法
1.4一個(gè)類可以創(chuàng)建多個(gè)對(duì)象,同一個(gè)類的多個(gè)對(duì)象,機(jī)構(gòu)相同,數(shù)據(jù)不同
1.5類 是對(duì)象的模板,對(duì)象是類的具體的實(shí)例
二:內(nèi)存管理
由jvm來管理
1.1用于存儲(chǔ)所有new出來的對(duì)象(包括成員變量) 1.2成員變量的生命周期;創(chuàng)建new對(duì)象時(shí)存在在堆中,對(duì)象被GC回收時(shí)一并消失 1.3垃圾:沒有任何引用所指向的對(duì)象 垃圾回收器GC不定時(shí)到內(nèi)存中掃描,看到垃圾不一定馬上回收 回收過程是透明的,并不是一看到垃圾就馬上回收,想快一點(diǎn)可以調(diào)用System.gc() 1.4局部變量:調(diào)用方法時(shí)存在在棧中,方法結(jié)束時(shí)與之一并消失 1.5方法區(qū): 用于存儲(chǔ).class字節(jié)碼文件(包括方法) 方法只有一份,通過this來區(qū)分具體是哪個(gè)
繼承
2.1目的:避免代碼重復(fù),有利于代碼的復(fù)用
2.2通過extends實(shí)現(xiàn)繼承
2.3父類/基類:所有子類所共有的屬性和行為 子類:子類所特有的屬性和行為
2.4子類/派生類繼承父類后,子類具有:子類+父類
2.5一個(gè)父類可以有多個(gè)子類,一個(gè)子類只能有一個(gè)父類-----單一繼承
2.6繼承具有傳遞性
2.7java規(guī)定:
構(gòu)造子類方法之前必須先構(gòu)造父類方法 子類構(gòu)造之前沒有調(diào)用父類的構(gòu)造,系統(tǒng)默認(rèn)super()來調(diào)用父類的無(wú)參構(gòu)造 若自己調(diào)用了,則不再默認(rèn)提供 super()調(diào)用父類構(gòu)造,必須位于子類構(gòu)造的第一行
super:指代當(dāng)前對(duì)象的父類對(duì)象
1:super.方法名()-----調(diào)用父類的方法 2:super.成員變量名-----調(diào)用父類的成員變量 3:super()------------調(diào)用父類的構(gòu)造方法 向上造型: 1:父類型的引用指向子類的對(duì)象 2:能點(diǎn)什么得看引用類型
三:方法
方法:方法的簽名:方法名+參數(shù)列表
1.方法的重載overload:同一個(gè)類中,方法名稱相同,參數(shù)列表不同 編譯器在編譯時(shí)自動(dòng)根據(jù)方法的簽名來綁定調(diào)用方法 2.構(gòu)造方法(構(gòu)造器,構(gòu)造函數(shù),構(gòu)建器) 常常用于給成員變量賦初值 與類同名,沒有返回類型 在創(chuàng)建(new)對(duì)象時(shí)被自動(dòng)調(diào)用 若自己不寫構(gòu)造方法,則編譯器默認(rèn)提供無(wú)參結(jié)構(gòu)的構(gòu)造方法 構(gòu)造方法可以重載 3.this:指代當(dāng)前對(duì)象,那個(gè)對(duì)象調(diào)用指的就是哪個(gè)對(duì)象 方法中訪問成員變量之前默認(rèn)都有個(gè)this this的用法 this.成員變量名-------訪問成員變量 this.(方法名)-------調(diào)用方法; this()--------------調(diào)用構(gòu)造方法 4.引用類型數(shù)組: 4.1 cell[] cells = new cell[4]; cells[0] = new cell(2,1); cells[1] = new cell(2,8); cells[2] = new cell(5,5); cells[3] = new cell(3,5); 4.2 cell[] cells = new cell[]{ new cell(2,1); new cell(2,8); new cell(5,5); new cell(3,5); } 4.3 int [][] arr = new int [3] []; arr[0] =new int [2]; arr[1] =new int [3]; arr[2] =new int [2]; arr[1][0] = 100; 4.4 int [][]arr = new int [3][4]; for(int i = 0;istatic:靜態(tài)的
1靜態(tài)變量 由static修飾 屬于類的,存在方法區(qū)中,只有一份 常常通過類名. 來訪問 何時(shí)用:若所有對(duì)象的數(shù)據(jù)都一樣時(shí)使用 2靜態(tài)方法 由static修飾 屬于類的,存在方法區(qū)中,只有一份 常常通過類名. 來訪問 沒有隱式的this來傳遞;靜態(tài)方法中不能直接訪問實(shí)例成員 何時(shí)用:方法的操作僅與參數(shù)相關(guān)而與對(duì)象無(wú)關(guān) 3靜態(tài)塊 由static修飾 屬于類的,類被加載時(shí)自動(dòng)執(zhí)行,類只被加載一次,所以靜態(tài)塊也只執(zhí)行一次 何時(shí)用:常常用于加載靜態(tài)資源圖片音視頻等 *成員變量: 1.實(shí)例變量:屬于對(duì)象的,存在堆中; 有幾個(gè)對(duì)象就有幾個(gè)實(shí)例變量; 必須通過對(duì)象名.來訪問 2.靜態(tài)變量: 由static修飾,屬于類的,存在方法區(qū)中 只有一份 常常通過類名. 來訪問 6.final:不能變 6.1修飾變量:變量不能被改變 6.2修飾方法:方法不能被重寫 6.3修飾類:類不能被繼承 7.static final常量 7.1必須聲明的同時(shí)初始化 7.2通過類名.來訪問,不能改變 7.3建議常量名都大寫 7.4在編譯的同時(shí)會(huì)自動(dòng)轉(zhuǎn)換為具體的值,效率高 1.抽象方法:由abstract修飾,只有方法的定義沒有方法的實(shí)現(xiàn) 2.抽象類: 2.1由abstract修飾 2.2包含抽象方法的類必須是抽象類 2.3抽象類不能被實(shí)例化 2.4抽象類是需要被繼承的,否則無(wú)意義,常用-----重寫所有抽象類的方法 2.5意義: 2.5.1包含公共的屬性和行為,被子類所共享 2.5.2為所有子類所提供一種公共的類型----向上造型 2.5.3包含抽象方法,為所有子類提供一個(gè)統(tǒng)一的方法,子類有不同的實(shí)現(xiàn)接口:
//接口是完全抽象的抽象類 1是一個(gè)標(biāo)準(zhǔn)、規(guī)范 2由interface定義 3只能包含常量和抽象方法,略的是public 4接口是不能被實(shí)例化的 5接口是需要被實(shí)現(xiàn)/繼承的,實(shí)現(xiàn)類/子類: 必須重寫接口中所有的抽象方法 3.6一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,用逗號(hào)隔開,若又繼承又實(shí)現(xiàn),要先extends后implements 3.7接口可以繼承接口多態(tài):意義:
1.1同一類型的引用指向不同的對(duì)象時(shí),有不同的實(shí)現(xiàn) 1.2強(qiáng)制類型轉(zhuǎn)換,成功的條件有兩個(gè): 引用所指向的對(duì)象,就是該類型 引用所指向的對(duì)象,實(shí)現(xiàn)了該接口 1.3instanceof關(guān)鍵字返回的是boolean類型結(jié)果,強(qiáng)轉(zhuǎn)成功的條件就是它為true的條件內(nèi)部類,有自己獨(dú)立的.class
1成員內(nèi)部類 只服務(wù)于外部類,他的對(duì)象一般是在外部類創(chuàng)建的 內(nèi)部類中可以直接訪問外部類的成員包括private 內(nèi)部類中有個(gè)隱式的引用指向創(chuàng)建他的外部類 2匿名內(nèi)部類 常用 想創(chuàng)建一個(gè)只用一次的類的對(duì)象,該類可不必命名 匿名內(nèi)部類中訪問外部的數(shù)據(jù),該數(shù)據(jù)必須final類型面向?qū)ο罂偨Y(jié)
面向?qū)ο蟮娜筇卣鳎?br>1.封裝
1.1 類:封裝的是對(duì)象的屬性和行為 1.2 方法:封裝的是具體的邏輯功能實(shí)現(xiàn) 1.3訪問控制修飾符:封裝的是訪問的權(quán)限2.繼承:
2.1作用:避免代碼的重復(fù),有利于代碼的重用 2.2父類:所有子類所共有的 子類:特有的 子類extends繼承后:子類+父類 2.3單一繼承,多接口實(shí)現(xiàn),具有傳遞性3.多態(tài)
3.1意義:行為的多態(tài)、對(duì)象的多態(tài) 3.2向上造型、強(qiáng)制類型轉(zhuǎn)換、instanceof 3.3多態(tài)的表現(xiàn)形式: 重寫+重載
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77599.html
摘要:對(duì)象既是該類事物實(shí)實(shí)在在存在的個(gè)體。類與對(duì)象的關(guān)系圖類就是汽車汽車就是堆內(nèi)存中的對(duì)象。成員變量成員變量成員函數(shù)的車,輪胎數(shù)個(gè),跑起來了對(duì)象的創(chuàng)建創(chuàng)建對(duì)象中創(chuàng)建對(duì)象,使用關(guān)鍵字在堆內(nèi)存中開辟了空間,產(chǎn)生了一個(gè)實(shí)體。 聲明:本文首發(fā)于我的個(gè)人微信公眾號(hào)【Java編程社區(qū)】,查看更多文章與學(xué)習(xí)資源請(qǐng)移步我的公眾號(hào)Java編程社區(qū) 萬(wàn)物皆對(duì)象 學(xué)習(xí)Java,我們都聽過這句話:萬(wàn)物皆對(duì)象。那么什...
摘要:學(xué)編程真的不是一件容易的事不管你多喜歡或是多會(huì)編程,在學(xué)習(xí)和解決問題上總會(huì)碰到障礙。熟練掌握核心內(nèi)容,特別是和多線程初步具備面向?qū)ο笤O(shè)計(jì)和編程的能力掌握基本的優(yōu)化策略。 學(xué)Java編程真的不是一件容易的事,不管你多喜歡或是多會(huì)Java編程,在學(xué)習(xí)和解決問題上總會(huì)碰到障礙。工作的時(shí)間越久就越能明白這個(gè)道理。不過這倒是一個(gè)讓人進(jìn)步的機(jī)會(huì),因?yàn)槟阋恢辈粩嗟膶W(xué)習(xí)才能很好的解決你面前的難題...
摘要:而面向搜索引擎,就是我們要及時(shí)的使用百度谷歌遇到問題無(wú)法解決,先別急著放棄,可以去網(wǎng)絡(luò)尋找答案,你的坑大部分別人都已經(jīng)走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語(yǔ)言,到底哪一門才是適合我的?●我們?yōu)槭裁匆獙W(xué)習(xí)Java語(yǔ)言呢...
摘要:字符串也可以是一個(gè)對(duì)象日期是一個(gè)對(duì)象數(shù)學(xué)和正則表達(dá)式也是對(duì)象數(shù)組是一個(gè)對(duì)象甚至函數(shù)也可以是對(duì)象一般的語(yǔ)言,都是利用類來創(chuàng)建對(duì)象,完成面向?qū)ο蟮倪^程。 在之前的一篇文章的末尾我提到了JavaScript的對(duì)象創(chuàng)建方法,可以利用函數(shù),內(nèi)置對(duì)象和this等關(guān)鍵詞實(shí)現(xiàn)對(duì)象的創(chuàng)建。但是很遺憾,我最先接觸的面向?qū)ο蟮木幊陶Z(yǔ)言是java,因而對(duì)于這些實(shí)現(xiàn)面向?qū)ο蟮姆椒ú⒎亲约旱氖走x。下面是那篇文章:...
摘要:一切都是對(duì)象之前自己學(xué)習(xí)就是以系統(tǒng)的角度去學(xué)習(xí),就是我們把這些知識(shí)點(diǎn)羅列出來,然后做一個(gè)全面的學(xué)習(xí)。按照面向?qū)ο蟮乃枷耄磺卸际菍?duì)象,不管什么數(shù)據(jù)都應(yīng)該是對(duì)象,但是對(duì)于一些基礎(chǔ)的數(shù)據(jù)類型為了運(yùn)行效率和內(nèi)存的優(yōu)化,將個(gè)基本類型進(jìn)行了特殊處理。 一切都是對(duì)象 之前自己學(xué)習(xí)Java就是以系統(tǒng)的角度去學(xué)習(xí),就是我們把這些知識(shí)點(diǎn)羅列出來,然后做一個(gè)全面的學(xué)習(xí)。這樣的的確確可以將知識(shí)點(diǎn)都學(xué)習(xí)全面,...
摘要:是完全的面向?qū)ο笳Z(yǔ)言,它們通過類的形式組織函數(shù)和變量,使之不能脫離對(duì)象存在。而在基于原型的面向?qū)ο蠓绞街校瑢?duì)象則是依靠構(gòu)造器利用原型構(gòu)造出來的。 JavaScript 函數(shù)式腳本語(yǔ)言特性以及其看似隨意的編寫風(fēng)格,導(dǎo)致長(zhǎng)期以來人們對(duì)這一門語(yǔ)言的誤解,即認(rèn)為 JavaScript 不是一門面向?qū)ο蟮恼Z(yǔ)言,或者只是部分具備一些面向?qū)ο蟮奶卣鳌1疚膶⒒貧w面向?qū)ο蟊疽猓瑥膶?duì)語(yǔ)言感悟的角度闡述為什...
閱讀 1711·2021-11-22 12:09
閱讀 1451·2019-08-30 13:22
閱讀 2083·2019-08-29 17:00
閱讀 2635·2019-08-29 16:28
閱讀 2945·2019-08-26 13:51
閱讀 1174·2019-08-26 13:25
閱讀 3237·2019-08-26 12:14
閱讀 3006·2019-08-26 12:14