一.代碼塊
主要介紹靜態代碼塊
即使用static修飾的代碼塊
位置:類中,方法外
調用過程:隨着類的加載而加載,且之加載一次,在構造代碼塊前執行。
實際的應用:用於加載驅動。
用一段代碼體現代碼塊順序:
public class Demo02 {
static {
System.out.println("我是main方法的靜態代碼塊");
}
public static void main(String[] args) {
System.out.println("main");
Test test1 = new Test();
Test test2 = new Test("yy");
}
}
class Test{
String name;
public Test() {
System.out.println("無參");
}
public Test(String name){
System.out.println("有參");
}
{
System.out.println("構造");
}
static{
System.out.println("靜態");
}
}
打印結果
我是main方法的靜態代碼塊
main
靜態
構造
無參
構造
有參
二.繼承
繼承是用來傳遞的,繼承的是屬性與方法(不是全部),用來建立類與類之間的關係。
好處:1.減少代碼量(代碼複用性)2.提高工作效率3.增強了類與類之間的關係
java中只允許單繼承(通過接口多繼承)
Java中 還允許多層繼承(繼承鏈)
當你只想使用共有方法和屬性,一般選擇繼承鏈最頂端的類。
當你只想使用特有方法和屬性,一般選擇繼承鏈最末端的類。
如果一個類沒有寫繼承,那麼這個類默認繼承 Object類(基類)
繼承中的構造方法
首先,構造方法不能繼承,但是,當創建子類對象時(不管你在創建子類對象時用的有參還是無參構造),爲了保證繼承的完整性,系統會默認幫你調用父類的無參構造方法。
如果父類中沒有無參構造方法該怎麼辦?
只需要在子類的構造方法的第一行,調用一下父類方法(有參無參都行)
關鍵字super與this
super在子類中代表的是父類的對象
this 在子類中 可以調用子類的屬性和方法(當子類中沒有這個屬性或方法,就去父類中尋找,找到就用,沒找到就報錯)。
三.方法的重寫(override)
前提:至少兩個有繼承關係的類。
作用:對父類的方法補充升級。
public class Demo08 {
public static void main(String[] args) {
TestD testD = new TestD();
testD.print();
}
}
class TestC{
public void print() {
System.out.println("我是c的print方法");
}
}
class TestD extends TestC{
public void print() {
//重寫父類的方法
//調不調用父類的方法,根據需求而定
super.print();
System.out.println("我是d的print方法");
}
}
打印結果爲:
我是c的print方法
我是d的print方法
四.關鍵字 final
1.修飾方法 方法不能被重寫
2.修飾類 類不能被繼承
3.修飾變量 變量不能被修改
4.修飾引用數據類型 不能進行重新指向(地址不能修改)
一般使用final定義靜態常量,然後可以用類名直接調用。
常規命名規範 所有字母大寫 多單詞用下劃線分開
例如:public static final int MAX_VALE = 10;