繼承的概述和好處java
提升代碼複用性ide
使類與類之間產生關係函數
繼承的格式this
繼承的案例spa
繼承後成員訪問特色對象
繼承後的特色—成員變量繼承
繼承後成員變量的訪問規則內存
重名it
子父類中出現同名的成員表量時,子類會優先訪問本身對象中的成員變量,若是此時想訪問父類成員變量,須要用到super關鍵字模板
super關鍵字:super能夠用於變量和方法
不重名
不重名不影響
繼承後的特色—成員方法
繼承後成員方法的的訪問規則
重名
則建立子類對象調用該方法的時候,子類對象會優先調用本身的方法
不重名
不影響,對象調用方法時,會先在子類中查找有沒有對應的方法,若子類中存在就會執行子類中的方法,若子類中不存在就會執行父類中相應的方法
方法重寫
方法重寫與方法重載的區別
方法重寫:子方法中出現與父方法的方法名,返回值類型,參數列表都相同的方法,會出現覆蓋效果
使用場景:發生再子父類之間的關係。子類繼承了父類的方法,可是子類以爲父類方法沒法知足本身的需求,子類從新寫了個與父類同名的方法,以便覆蓋父類的方法。
Overrider重寫註解
標記在方法上面,提升代碼可讀性,也能夠防止出錯
注意事項
方法重寫是在發生父子類之間的關係
子類方法覆蓋父類方法,必需要保證權限大於等於父類權限
子類方法覆蓋父類方法,返回值類型,函數名和參數列表都要如出一轍
方法重載:局部方法中出現方法名和返回值類型相同,參數列表不一樣的方法
繼承後的特色—構造方法
繼承構造方法的規則
構造器的定義格式和做用
構造器的名字是與類名是一致的,因此子類是沒法繼承父類構造方法的
構造器的做用是初始化對象成員變量數據的,因此子類的初始化過程當中,必須先執行父類的初始化動做,子類的構造方法中默認有一個super( ),表示調用父類的構造方法,父類成員變量初始化後,才能夠給子類使用(先有爸爸,纔有兒子)
注意事項
在子類的構造方法中調用父類的構造方法必定要放在子類構造方法中的第一行
全部子類的構造方法都會默認調用父類的空參構造方法
子類的構造器的第一行都隱含了一個super( )區調用父類無參數構造器,super( )能夠省略不寫
若是子類的構造方法中手動調用了構造方法,那麼們就不會自動調用父類的構造方法
子類有用子類, 子類沒有找父類, 父類有就用父類, 父類沒有就報錯.
繼承的特色
java只支持單繼承,不支持多繼承
單繼承:一個子類只能有一個父類
多繼承:一個子類能夠有多個父類
一個子類雖然只能有一個父類,可是一個父類能夠有多個子類
能夠多層繼承
多層繼承:子類能夠繼承父類也能夠被另外一個子類繼承
super和this關鍵字
繼承內存
在堆中new出來的空間裏面,對象空間除了有子類的方法和變量,還有一個空間存放父類的變量和方法,
當主方法調用方法或者變量時,根據就近原則優先選擇本類(局部),若是沒有,再考慮父類
抽象類的概述
抽象方法和抽象概念
咱們把沒有方法主體的方法稱爲抽象方法
Java語法規定,包含抽象方法的類就是抽象類
模板模式
抽象方法的定義和使用
定義抽象類:抽象須要使用abstract關鍵字修飾,這種類不能被建立對象。他就是用來作父類,被子類繼承的
格式: 權限修飾符 abstract class 類名
抽象類的注意事項
注意:繼承抽象類的子類必須重寫父類全部的抽象方法,不然,該子類也必須聲明爲抽象類
抽象類中不必定有抽象方法,可是有抽象方法的必定是抽象類
抽象類不能建立對象,只能建立其非抽象子類的對象
抽象類中,能夠有構造器,是提供子類建立對象時,初始化成員使用的
抽象類的子類必須重寫父類中全部的抽象方法不然子類也必須定義成抽象類
抽象類存在的意義是爲了被子類繼承,抽象體現的是模板思想
final關鍵字的概述
不可改變,能夠用於修飾類,方法和變量
類:被修飾的類,不能被繼承
方法:被修飾的方法,不能被重寫
變量:被修飾的變量不能被從新賦值