1、靜態**塊
static
靜態**塊,當第一次用到本類時,靜態**塊執行唯一的一次;靜態內容總是優先於非靜態的(先有類在有物件),所以靜態**塊比構造方法先執行;
靜態**塊的典型用途:用來一次性的對靜態成員進行賦值;
2、靜態是不能直接訪問非靜態的,如果想訪問必須要先建立物件,讓物件去呼叫非靜態;靜態變數不可設定全參構造和get/set方法————》因為靜態的是共享的資料;
3、在繼承關係中,子類就是乙個父類,子類可以當做父類看待;
4、父類將共有的內容賦值乙份給每乙個子類,父類的內容,是所有子類共有的內容;
public class fu()
public void method_02(){}
}public class zi extends fu()
public class demo01
}
子類的特殊屬性或行為,不能寫在對應的父類中,因為父類的資料內容是所有子類共享的;
5、什麼條件下使用繼承?
【a】前提是必須在同乙個類的事物,將一類事物中相同的屬性和行為抽取出來,形成乙個類,作為同一類的父類,這樣做可以提高**的復用性;
6、父類不能訪問子類的內容,因為父類不能確認子類當中有什麼內容;
當訪問變數的時候,遵循就近原則,區域性變數-》本類成員變數-》向上查詢父類的成員變數
7、在父子繼承關係中,進行覆蓋重寫,
【a】子類方法的返回值必須小於等於父類方法的返回值範圍
【b】子類方法的訪問許可權必須大於等於父類的許可權修飾符
8、什麼時候去重寫父類的方法?
【a】如果父類的方法已經不滿足子類的使用
【b】提高子類方法的功能性,子類的功能將比父類更強大;
9、當乙個類,即繼承了乙個父類,又實現了若干個介面時,父類中的成員方法和介面中的預設方法重名,子類就近原則選擇執行父類的成員方法;
【注意】
【a】子介面重寫預設方法時,default關鍵字可以保留;
【b】子類重寫預設方法時,default關鍵字不可以保留;
10、繼承中:**只有子類構造方法,才能呼叫父類構造方法;**同時子類構造方法必須呼叫父類的構造方法,不寫贈送,同時必須位於子類構造方法的第乙個語句;
【注意父子類執行的順序】先執行父類的構造方法,對父類的成員進行初始化動作,在對子類進行初始化,才構建子類物件;無論如何建立子類物件的時候,都要先保證父類被初始化;
super();就是用來訪問父類的構造方法,來初始化父類中成員;
public zi()
public void method()
11、構造方法的作用:
【a】初始化成員變數
【b】構建物件
構建物件:new 在堆中開闢乙個記憶體空間,通過構造方法建立物件;
12、執行和呼叫?zi zi = new zi();呼叫子類物件,但是先執行父類的構造方法,來初始化父類的成員,初始化完成後,才能使用,之後在進行子類的構造方法進行子類的初始化動作;
13、【a】this和super訪問的都是成員,this訪問的是本類成員,super訪問父類成員;
【a】this不加小括號,代表的是本來的物件,this(),代表的本類的構造方法;
public zi()
pubic zi(int n)
當子類new物件時,每個子類在堆中的記憶體空間都有乙個父類空間,同時每new一次,就是呼叫了一次子類的構造方法,這樣就會重新初始化一次父類成員,super();即使對同一變數進行賦值動作,也不會相互影響;
父類進行初始化後,子類new物件時,父類會將成員變數和成員方法,複製乙份給子類物件到堆記憶體中,這樣子類物件就可以直接使用父類裡面的成員(成員變數和成員方法)了;每new一次父類就會複製乙份成員給子類,同時不會被覆蓋;
14、抽象方法,就是abstract關鍵字,去掉大括號,沒有方法體,只是定義了乙個方法,沒有具體的實現;
【注意】
【抽象類不能直接建立物件】,抽象類必須作為乙個父類,通過子類繼承進行實現,同時子類必須覆蓋重寫抽象類中的所有抽象方法,否則子類也必須是乙個抽象類;
抽象類如果可以建立物件,那麼抽象類物件就可以直接訪問抽象類中的抽象方法了,但是抽象方法時沒有方法體,沒有具體實現的,抽象類物件訪是沒有意義的;
抽象類可以有成員變數和成員方法,和構造方法;
【a】抽象類中構造方法,是用來初始化成員變數的,因為在抽象類中有成員變數,new物件,就要對抽象類中的成員進行初始化,所以抽象類中可以有構造方法;但是介面中沒有構造方法的,只有抽象方法,因為介面中沒有成員變數存在;
抽象類的作用:主要是對子類定義規則,必須要遵循的;其實抽象方法就是一種規則;子類必須覆蓋重寫所有的抽象方法;
15、每new一次物件,子類記憶體空間都有乙份父類的成員空間;
抽象類中的構造方法是用來初始化成員變數的,因為在抽象類中有成員變數
,但是抽象類中的構造方法是不能被例項化的,因為抽象類中可以有抽象方
法,而抽想方法是沒有方法體的方法,不能直接呼叫,必須要讓子類實現才
能夠使用;
多型:fu f = new zi();
f.method();
當使用多型呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯
錯誤,如果有,執行的是子類重寫後方法;
呼叫成員方法的時候,編譯看等號左邊,執行看等號右邊,new誰就呼叫誰;
後期的學習內容,希望明天可以得到,同時踏實學習,將不會的,不清楚,都要搞明白,舉一反三,共勉,以馬內利
Day20 高階函式
今天主要學習了python中sorted,filter,map 三個高階函式,還了解了一下函式的柯里化 1.什麼是高階函式def way1 x return x 3 def way2 x return x x result way2 way1 7 print result 1002.標準庫中的高階函...
暑期訓練 day20
暑期訓練 day20 趙景樂今天看完了第二章的內容,有點多,現在想想記得的沒多少,還需要鞏固鞏固,找個時間再把相應的 打一打。今天訓練賽的a題錯了兩次,沒想到暴力能過,還是一開始打的麻煩了,c題是數學題,因為一開始沒優化到底,結果超時了,剪枝 改良公式也算剪枝吧,畢竟少了一重迴圈 後就過了,b題一開...
day20 函式遞迴
函式不僅可以巢狀定義,還可以巢狀呼叫,即在呼叫乙個函式的過程中,函式內部又呼叫另乙個函式,而函式的遞迴呼叫指的是在呼叫乙個函式的過程中又直接或間接地呼叫該函式本身 例如在呼叫f1的過程中,又呼叫f1,這就是直接呼叫函式f1本身 在呼叫f1的過程中,又呼叫f2,而在呼叫f2的過程中又呼叫f1,這就是間...