super的三種用途
1. 可以訪問父類的成員變數。
super.成員變數
2. 可以訪問父類的成員方法
super.成員方法()
3. 可以訪問父類的構造方法
super();
this的三種用途:
1. 可以訪問本類中的成員變數。
this.成員變數
2. 可以訪問本類中的成員方法
this.成員方法()
3. 可以訪問本類中的構造方法。
this(引數);
如果this呼叫構造方法,也必須放在第一行
employee
/* 我們可以將多個類(子類)中的共性向上抽取,抽取到另乙個類(父類)中。
子類繼承父類,會自動擁有父類所有的成員(私有成員也能繼承,不過無法直接訪問)
繼承的格式:
public class a {}
public class b extends a {}
上面**表示b類繼承了a類,b是子類,a是父類,b類會自動擁有a類所有的成員。
*/public class employee
teacher
/* 講師類
*/public class teacher extends employee
}assistant
/* 助教類
*/public class assiatant extends employee
}demotest
/* 測試類
*/public class demo01test
}
匿名物件顧名思義就是沒有名字的物件,如果我們建立了乙個物件但是在左邊沒有用變數接收這個物件,那麼就是乙個匿名物件。
比如建立物件的格式:
資料型別 物件名 = new 資料型別();
如果上面格式只寫了右邊,沒有寫左邊,那麼就是乙個匿名物件。
好處: 匿名物件可以稍微簡化我們的操作。
匿名物件的使用場景:
1. 如果某個物件我們只需要用一次,那麼可以使用匿名物件【匿名物件沒有接受,用完之後就找不到了】
2. 當做方法引數進行傳遞。
繼承關係中成員變數的訪問特點:
通過子類訪問成員,子類沒有,會向上找父類。
通過父類訪問成員,父類沒有,不會向下找子類。
父類和子類成員變數同名時的訪問特點(了解):
直接訪問(通過子類物件直接訪問):
使用的是子類自己的成員。
間接訪問(通過方法的方式去訪問)
呼叫的是哪個類中的方法,訪問到的就是哪個類中的成員變數。
繼承中成員方法的訪問特點
如果子類中的成員方法和父類中的成員方法同名,那麼通過子類物件訪問成員方法,訪問的是子類中定義的成員方法。 如果子類**現了和父類一模一樣的方法,那麼這個就叫做方法的重寫。
重寫和過載的區別:
過載: 方法名,引數列表不同。
重寫: 在子類**現了和父類一模一樣的方法。
方法重寫的注意事項:
1. 子類在重寫父類方法時,引數列表必須相同。
2. 子類重寫父類方法時,子類方法的許可權一定要大於等於父類方法的許可權【了解】
public > protected > 預設 > private
預設許可權指的是省略不寫,如果省略許可權修飾符,那麼方法就是預設許可權。
3. 私有的方法不能被重寫
一般來說,方法重寫時,許可權修飾符,返回值型別都是一致的。
在繼承關係中構造方法的注意事項:
1. 構造方法不能繼承。
2. 建立子類物件時會先執行父類的構造方法,然後執行子類的構造方法。 原因是因為在子類構造方法的第一句有乙個隱藏的super(),是在呼叫父類的空引數構造方法
3. 我們也可以使用super關鍵字手動呼叫父類的構造方法。
super(引數)
4. 如果使用super呼叫構造方法,那麼只能放在第一行。
動物類。
動物有吃的行為,但是動物吃什麼,我們是說不清的, 這種說不清道不明的方法,我們可以定義成抽象方法。
抽象方法:
使用abstract修飾,沒有方法體。
抽象方法格式:
public abstract 返回值型別 方法名(引數);
抽象類:
抽象方法存在的類必須是乙個抽象類。抽象類就是使用abstract修飾的類。
抽象類的格式:
public abstract class 類名 {}
抽象類的使用:
1. 抽象類不能建立物件。
2. 抽象類是給子類用的,我們要定義乙個子類去繼承抽象類。
3. 重寫抽象類中的所有的抽象方法。
4. 建立子類物件,通過子類物件呼叫方法。
抽象類的注意事項:
1. 抽象類不能建立物件
2. 抽象類中也是有構造方法的,抽象類中的構造方法是給子類用的。
3. 抽象類中可以有抽象方法,也可以有非抽象的方法。
抽象方法所在的類必須是乙個抽象類。
4. 乙個普通類在繼承抽象類時,必須重寫這個抽象類中所有的抽象的方法。
乙個抽象類在繼承抽象類時,可以不重寫抽象類中的抽象方法。
5. 抽象類的目的是為了讓子類繼承,體現的是模板思想。
模板方法模式
將固定的流程定義在父類中,不同的地方使用抽象方法,讓子類繼承重寫
如果final修飾類,這個類不能被繼承,但是這個類可以繼承其他類。
如果final修飾方法,這個方法不能被重寫,但是可以被子類繼承使用。
如果final修飾變數,這個變數的值不能被改變,從效果上看,這個變數也就變成了常量。
如果final修飾的是區域性變數,那麼變數的值只能賦值一次,一旦賦值就不能更改了。
如果final修飾的是成員變數,該變數也是只能賦值一次,一旦賦值不能更改。
final修飾的成員變數,必須在建立物件之前完成賦值(可以直接賦值,也可以構造方法中賦值)
常量的命名規範:所有字母都大寫,如果有多個單詞,多個單詞之間使用下劃線隔開。比如: aaa_bbb_ccc
繼承 介面 抽象
繼承是物件導向最顯著的乙個特性。繼承是從已有的類中派生出新的類,新的類能吸收已有類的資料屬性和行為,並能擴充套件新的能力 抽象方法是一種特殊的方法 它只有宣告,而沒有具體的實現 介面泛指供別人呼叫的方法或者函式 抽象類與介面的方法 1 抽象類可以提供成員方法的實現細節,而介面中只能存在public ...
抽象和繼承
抽象應該盡可能有多的共同 而擁有盡可能少的資料,乙個物件從超類繼承來的 在不使用的時候不會造成資源浪費,而資料的移動是從抽象到具體,乙個物件的資料不論是否使用都會占用資源。繼承關係分為 類對介面的實現和類對類的繼承,只要有可能盡量使用合成,而不要使用繼承達到復用的目的 使用繼承關係 1 子類是超類的...
繼承 抽象 多型
繼承 在php中,使用extends實現繼承,子類 派生類 繼承父類 基類 繼承是為了擺脫重複 繼承 析構方法 子類繼承父類時,子類沒有構造方法,例項化子類物件時,會執行父類的構造方法。子類如果有自己的構造方法,例項化子類物件時,只會自動執行子類自己的構造方法。在子類的構造方法中,使用 parent...