1:復習
1:this關鍵字
1:this表示當前對象的引用。
2:this訪問本類中的成員變量和成員方法。也可以訪問構造方法,必須放在第一條語句。
3:this可以作為實參來傳遞
2:面向對象三大特征:封裝,繼承,多態。
2.1:封裝:屬性私有化,提供公共的方法供外界訪問。
2:繼承
2.1:當分析一些事物時,發現他們有很多相同的地方,為了提高代碼的可重用性,可以將他們相同的部分提取出來,放到一個類里。讓其他的事物跟這個類建立關系,而這種關系就叫繼承。用關鍵字extends來表示。Extends 英文是擴展的意思。(子類也稱派生類)
2.2:產生繼承關系后對子類的影響
1:子類可以擁有父類的所有的屬性或者方法(以后講訪問權限.)
2.3:super:
1:表示父類的標識,也就是一個名字罷了。
2:作用
1:可以訪問父類的成員 super.成員變量名。
2:訪問父類的方法 super.方法名( )
3:訪問父類的構造方法 .創建子類對象時,先默認調用父類的無參構造方法,再調用子類的相應構造方法。調用父類的構造方法必須是構造方法中的第一條語句。如果需要調用父類的有參構造方法,必須顯式得調用。
3:this與super的區別
1:作用,this表示當前對象的引用,而super表示父類的標識。
2:訪問。this可以訪問本類的成員變量和方法,而super訪問父類的成員變量和方法。
3:相同點。訪問構造方法時,都必須放在構造方法的第一條語句。它們不會相遇。如果在子類的構造方法中顯式得調用自己的構造方法,則不會調用父類的構造方法。如果沒寫,則隱式得會調用父類的無參得構造方法。
4:this可以作為實參來使用。但是super不可以。(為什么不可以?)
super只是父類的一個標識,沒有實質性的意義,并不牽涉到內存。而this是表示對象的引用,能夠代表對象的,指向引用對象的首地址。
2.4:方法的重寫==方法的覆蓋==方法的復寫
不同的人有不同的習慣叫法,然而重寫、覆蓋、復寫都是一個意思,還有方法和函數也是一樣的東西。
1:什么時候子類的方法會重寫父類的方法?當父類的方法的功能無法滿足子類的功能時,這個時候會重寫。不僅僅是代碼重用!
2:什么是方法重寫?
1:方法的聲明相同,方法體一般情況下是不同的。
訪問權限 返回值類型 方法名(參數列表).
訪問權限可以不一樣。必須符合一定的規則。后面講訪問權限的時候再說,現在就認為訪問權限一樣的。子類中重寫父類的方法,訪問權限必須大于或者等于父類的訪問權限。
拋出的異常也有所要求。
3:方法的重載跟方法重寫的區別
重寫的前提是繼承extends!extend是是擴展的意思,取這樣的名字都是有一定的含義的,結合名字的本意更容易理解。
1:方法的重載發生在同一個類里。而方法重寫發生在父子類里。
2:方法的重載是方法名相同,參數列表不一樣。而方法重寫是方法名和參數列表,返回值類型都必須相同,方法聲明要相同,方法體不一樣。
3:功能上。方法的重寫是為了功能的擴展。
4:繼承的細節
1:java中只能單繼承,可以多層繼承。
2:java中為什么不能多繼承? 容易產生沖突,假設能多繼承,而繼承的父類有相同的方法,那該調用那個方法呢?
3:什么時候會產生繼承關系呢?
當類與類之間存在著所屬關系時,才具備了繼承的前提。a是b中的一種。a繼承b。狼是犬科中的一種。所以判斷所屬關系,可以簡單看,如果繼承后,被繼承的類中的功能,都可以被該子類所具備,那么繼承成立。如果不是,不可以繼承。
4:創建對象是建議創建最子類的對象:這樣既可以用父類方法也可用子類方法
3:
3.1:包和訪問權限。
3.1.1:包
包的作用:解決類名沖突的和類的歸類。相似作用的類會放在同一個包里。
如何定義包:package 包名; 必須放在文件中的第一條語句(不包括注釋)。
命名規范:都是小寫。一般都是域名的反向。
www.baidu.com--->com.baidu.entity: 編譯以后會自動生成com文件夾,baidu文件夾,entity文件夾。baidu文件夾在com里,entity在baidu里
導包 : import 包名.類名
3.1.2:訪問權限:PRivate:私有的。默認的(不寫就是默認)。protected:受保護的。public:公共的。
private :只能在本類中訪問。不可以修飾類。
默認的: 同一個包的類可以訪問
protected: 同一個包的類可以訪問,不同包的子類可以訪問。不可以修飾類。
public:所有的類都可以訪問。
private < 默認的 < protected <public
3.2:static.:靜態
3.2.1:當一個類的所有對象的一個成員變量的值都是一樣的時候,為了節省內存,可以將這個成員變量設置為static,那么這個變量在內存中只有一份空間,不管創建多少個對象。也可以說達到了共享的目的,所有對象共享這個數據,既然是共享的,那么值改變一次,所有的對象的這個值也就變了。
3.2.2:靜態成員變量的訪問以及加載的順序。
靜態成員變量可以用類去訪問,也可以用對象去訪問,一般的情況下都用類去訪問。
靜態成員是隨著類的加載而加載的,這個時候不一定會有對象。它在內存中存在的生命周期是最長的。
加載順序:先分配靜態成員變量 ,靜態方法 -------創建對象后,再分配非靜態成員變量空間-----調用非靜態方法時,非靜態方法才會進棧。
3.2.3:靜態方法(先加載)不可以訪問非靜態成員(后加載),但是非靜態方法可以訪問靜態成員。
當一個方法沒有訪問這個類的成員或者這個類的非靜態成員時,可以將這個方法定義為靜態方法。以方便調用。
3.2.4:靜態代碼塊:擴展。
執行順序:靜態代碼塊-------構造代碼塊------構造方法。
靜態代碼塊:只會執行一次。
構造代碼塊和構造方法:new一次就執行一次
靜態代碼塊的作用?對靜態成員進行初始化的。
3.3:final
3.3.1: final:表示最終的。
3.3.2:final修飾方法,則表示子類不能重寫該方法
final修飾成員變量,表示這個變量的值不能再改變,并且必須要顯式初始化。非靜態final成員可以在構造代碼塊或者構造方法內初始化,且只能在其一進行初始化,如果是在構造方法中初始化則可以在每個構造函數中進行賦值!靜態final成員可以在靜態代碼塊內初始化。由于它的值在后面不能修改,所以很多時候將final和static一起使用,來修飾一個常量。這個常量表示在整個類或者項目中用的比較多,而且都不會修改值,只會用這個常量的值。
final修飾類:表示這個類是最終類,不能被繼承。
3.4:抽象類。
3.6:接口
3.7:多態
3.8:設計模式:單例模式,簡單工廠模式。
3.9:內部類。接口回調
新聞熱點
疑難解答