摘要:一什么是類什么是對象現實世界是有很多對象組成的,基于對象抽出了類對象是真實存在的單個的個體,類是一類個體,類型類別類中可以包括所有對象所共有的特征屬性變量所有對象所共有的行為方法一個類可以創建多個對象,同一個類的多個
一:什么是類 什么是對象
1.1現實世界是有很多對象組成的,基于對象抽出了類
1.2對象是真實存在的單個的個體,類是一類個體,類型/類別
1.3類中可以包括:
所有對象所共有的特征屬性----變量 所有對象所共有的行為--------方法
1.4一個類可以創建多個對象,同一個類的多個對象,機構相同,數據不同
1.5類 是對象的模板,對象是類的具體的實例
二:內存管理
由jvm來管理
1.1用于存儲所有new出來的對象(包括成員變量) 1.2成員變量的生命周期;創建new對象時存在在堆中,對象被GC回收時一并消失 1.3垃圾:沒有任何引用所指向的對象 垃圾回收器GC不定時到內存中掃描,看到垃圾不一定馬上回收 回收過程是透明的,并不是一看到垃圾就馬上回收,想快一點可以調用System.gc() 1.4局部變量:調用方法時存在在棧中,方法結束時與之一并消失 1.5方法區: 用于存儲.class字節碼文件(包括方法) 方法只有一份,通過this來區分具體是哪個
繼承
2.1目的:避免代碼重復,有利于代碼的復用
2.2通過extends實現繼承
2.3父類/基類:所有子類所共有的屬性和行為 子類:子類所特有的屬性和行為
2.4子類/派生類繼承父類后,子類具有:子類+父類
2.5一個父類可以有多個子類,一個子類只能有一個父類-----單一繼承
2.6繼承具有傳遞性
2.7java規定:
構造子類方法之前必須先構造父類方法 子類構造之前沒有調用父類的構造,系統默認super()來調用父類的無參構造 若自己調用了,則不再默認提供 super()調用父類構造,必須位于子類構造的第一行
super:指代當前對象的父類對象
1:super.方法名()-----調用父類的方法 2:super.成員變量名-----調用父類的成員變量 3:super()------------調用父類的構造方法 向上造型: 1:父類型的引用指向子類的對象 2:能點什么得看引用類型
三:方法
方法:方法的簽名:方法名+參數列表
1.方法的重載overload:同一個類中,方法名稱相同,參數列表不同 編譯器在編譯時自動根據方法的簽名來綁定調用方法 2.構造方法(構造器,構造函數,構建器) 常常用于給成員變量賦初值 與類同名,沒有返回類型 在創建(new)對象時被自動調用 若自己不寫構造方法,則編譯器默認提供無參結構的構造方法 構造方法可以重載 3.this:指代當前對象,那個對象調用指的就是哪個對象 方法中訪問成員變量之前默認都有個this this的用法 this.成員變量名-------訪問成員變量 this.(方法名)-------調用方法; this()--------------調用構造方法 4.引用類型數組: 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:靜態的
1靜態變量 由static修飾 屬于類的,存在方法區中,只有一份 常常通過類名. 來訪問 何時用:若所有對象的數據都一樣時使用 2靜態方法 由static修飾 屬于類的,存在方法區中,只有一份 常常通過類名. 來訪問 沒有隱式的this來傳遞;靜態方法中不能直接訪問實例成員 何時用:方法的操作僅與參數相關而與對象無關 3靜態塊 由static修飾 屬于類的,類被加載時自動執行,類只被加載一次,所以靜態塊也只執行一次 何時用:常常用于加載靜態資源圖片音視頻等 *成員變量: 1.實例變量:屬于對象的,存在堆中; 有幾個對象就有幾個實例變量; 必須通過對象名.來訪問 2.靜態變量: 由static修飾,屬于類的,存在方法區中 只有一份 常常通過類名. 來訪問 6.final:不能變 6.1修飾變量:變量不能被改變 6.2修飾方法:方法不能被重寫 6.3修飾類:類不能被繼承 7.static final常量 7.1必須聲明的同時初始化 7.2通過類名.來訪問,不能改變 7.3建議常量名都大寫 7.4在編譯的同時會自動轉換為具體的值,效率高 1.抽象方法:由abstract修飾,只有方法的定義沒有方法的實現 2.抽象類: 2.1由abstract修飾 2.2包含抽象方法的類必須是抽象類 2.3抽象類不能被實例化 2.4抽象類是需要被繼承的,否則無意義,常用-----重寫所有抽象類的方法 2.5意義: 2.5.1包含公共的屬性和行為,被子類所共享 2.5.2為所有子類所提供一種公共的類型----向上造型 2.5.3包含抽象方法,為所有子類提供一個統一的方法,子類有不同的實現接口:
//接口是完全抽象的抽象類 1是一個標準、規范 2由interface定義 3只能包含常量和抽象方法,略的是public 4接口是不能被實例化的 5接口是需要被實現/繼承的,實現類/子類: 必須重寫接口中所有的抽象方法 3.6一個類可以實現多個接口,用逗號隔開,若又繼承又實現,要先extends后implements 3.7接口可以繼承接口多態:意義:
1.1同一類型的引用指向不同的對象時,有不同的實現 1.2強制類型轉換,成功的條件有兩個: 引用所指向的對象,就是該類型 引用所指向的對象,實現了該接口 1.3instanceof關鍵字返回的是boolean類型結果,強轉成功的條件就是它為true的條件內部類,有自己獨立的.class
1成員內部類 只服務于外部類,他的對象一般是在外部類創建的 內部類中可以直接訪問外部類的成員包括private 內部類中有個隱式的引用指向創建他的外部類 2匿名內部類 常用 想創建一個只用一次的類的對象,該類可不必命名 匿名內部類中訪問外部的數據,該數據必須final類型面向對象總結
面向對象的三大特征:
1.封裝1.1 類:封裝的是對象的屬性和行為 1.2 方法:封裝的是具體的邏輯功能實現 1.3訪問控制修飾符:封裝的是訪問的權限2.繼承:
2.1作用:避免代碼的重復,有利于代碼的重用 2.2父類:所有子類所共有的 子類:特有的 子類extends繼承后:子類+父類 2.3單一繼承,多接口實現,具有傳遞性3.多態
3.1意義:行為的多態、對象的多態 3.2向上造型、強制類型轉換、instanceof 3.3多態的表現形式: 重寫+重載
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77599.html
摘要:對象既是該類事物實實在在存在的個體。類與對象的關系圖類就是汽車汽車就是堆內存中的對象。成員變量成員變量成員函數的車,輪胎數個,跑起來了對象的創建創建對象中創建對象,使用關鍵字在堆內存中開辟了空間,產生了一個實體。 聲明:本文首發于我的個人微信公眾號【Java編程社區】,查看更多文章與學習資源請移步我的公眾號Java編程社區 萬物皆對象 學習Java,我們都聽過這句話:萬物皆對象。那么什...
摘要:學編程真的不是一件容易的事不管你多喜歡或是多會編程,在學習和解決問題上總會碰到障礙。熟練掌握核心內容,特別是和多線程初步具備面向對象設計和編程的能力掌握基本的優化策略。 學Java編程真的不是一件容易的事,不管你多喜歡或是多會Java編程,在學習和解決問題上總會碰到障礙。工作的時間越久就越能明白這個道理。不過這倒是一個讓人進步的機會,因為你要一直不斷的學習才能很好的解決你面前的難題...
摘要:而面向搜索引擎,就是我們要及時的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網絡尋找答案,你的坑大部分別人都已經走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們為什么要學習Java語言呢...
摘要:字符串也可以是一個對象日期是一個對象數學和正則表達式也是對象數組是一個對象甚至函數也可以是對象一般的語言,都是利用類來創建對象,完成面向對象的過程。 在之前的一篇文章的末尾我提到了JavaScript的對象創建方法,可以利用函數,內置對象和this等關鍵詞實現對象的創建。但是很遺憾,我最先接觸的面向對象的編程語言是java,因而對于這些實現面向對象的方法并非自己的首選。下面是那篇文章:...
摘要:一切都是對象之前自己學習就是以系統的角度去學習,就是我們把這些知識點羅列出來,然后做一個全面的學習。按照面向對象的思想,一切都是對象,不管什么數據都應該是對象,但是對于一些基礎的數據類型為了運行效率和內存的優化,將個基本類型進行了特殊處理。 一切都是對象 之前自己學習Java就是以系統的角度去學習,就是我們把這些知識點羅列出來,然后做一個全面的學習。這樣的的確確可以將知識點都學習全面,...
摘要:是完全的面向對象語言,它們通過類的形式組織函數和變量,使之不能脫離對象存在。而在基于原型的面向對象方式中,對象則是依靠構造器利用原型構造出來的。 JavaScript 函數式腳本語言特性以及其看似隨意的編寫風格,導致長期以來人們對這一門語言的誤解,即認為 JavaScript 不是一門面向對象的語言,或者只是部分具備一些面向對象的特征。本文將回歸面向對象本意,從對語言感悟的角度闡述為什...
閱讀 1729·2021-11-22 12:09
閱讀 1459·2019-08-30 13:22
閱讀 2092·2019-08-29 17:00
閱讀 2642·2019-08-29 16:28
閱讀 2954·2019-08-26 13:51
閱讀 1181·2019-08-26 13:25
閱讀 3243·2019-08-26 12:14
閱讀 3014·2019-08-26 12:14