1.子類在同一個包下面可以範文父類除了私有private修飾的全部屬性和方法java
2.在不一樣包下面,子類對象只能訪問public修飾的屬性和方法數組
3.在子類內部,若是不一樣包的狀況下,能夠訪問protected修飾的屬性和方法,可是不能訪問默認的訪問修飾符修飾的屬性和方法jvm
4.子類在初始化的時候會先調用父類的默認不帶參數構造器,若是沒有,就會報錯,咱們只有人爲的修改ide
(1).將父類添加一個無參數的構造器函數
(2).在子類構造器中手動使用super()聲明調用哪一個父類的構造器this
當對象初始化以後,成員變量就會有初始值spa
String null 整型 0 浮點型 0.0 boolean false char (char)0對象
局部變量繼承
1.定義的位置不同 局部變量:在方法的內部 成員變量:在方法的外部,直接寫在類當中接口
2.做用範圍不同 局部變量:只有方法當中纔可使用,出了方法就不能再用 成員變量:整個類全均可以通用。
3.默認值不同 局部變量:沒有默認值,若是想要使用,必須手動進行賦值 成員變量:若是沒有賦值,會有默認值,規則和數組同樣
4.內存的位置不同 局部變量:位於棧內存 成員變量,位於堆內存。
5.生命週期不同 局部變量:隨着方法進棧而誕生,隨着方法出棧而死亡。 成員變量:隨着對象建立而誕生,隨着對象被垃圾回收而消失。
全部和動做相關的,都應該放入到方法中
對象是類的實例
也都具備屬性和方法
對象都是屬於某個類
一切皆對象
注意:對象是 new XXX(),而不是具體的哪一個名字,名字只是一個引用
Book [] books = new Book[50];
The local variable type may not have been initialized 局部變量尚未被賦值
成員變量當對象初始化的時候會自動給上初始值
局部變量不會自動給初始值
若是要給成員變量賦初始值,就只能寫在一行,不能再另一行從新賦值
就是爲了少寫方法名,一樣的方法名,只要參數不同,就能夠執行不一樣的操做
在同一個類中
方法名同樣
參數不同 1.參數類型不同 2.參數個數不同 3.參數的順序不同(不一樣類型的順序)
1.繼承
2.子類重寫父類的方法
3.方法名同樣
4.參數類型,參數個數同樣
5.返回值同樣
6.注意父類private修飾的方法,子類不能重寫
7.子類重寫方法的訪問修飾符可見度,必須必父類方法的訪問修飾符可見度高
8.注意:若是隻是方法名同樣,參數不同,這個樣子是一個子類的重載而已
構造器: 構造器必須和當前的類名相同,所以構造器不能繼承!
1.每一個類都默認有構造器
2.默認構造方法就是一個無參數的,沒有任何函數體的方法
3.本身手動寫構造方法
4.構造方法格式: 訪問修飾符 類名([參數...參數]){}
5.構造方法能夠重載
6.若是咱們手動寫了一個帶參數的構造器,會自動的覆蓋系統自帶的默認構造器
7.習慣:若是手動添加了一個帶參數的構造器,最好寫一個無參數的構造器
注意: 在new子集的時候會先調用父集的無參數的構造器,帶參數的構造器不會自動調用
全部的屬性都是private
爲每一個屬性創建setter和getter方法 (快捷鍵:shift + alt + s)
這個其實就是爲了之後裝數據用的一個類
向上轉型
向下轉型
轉型須要的條件:
1.繼承關係
2.要有相互引用的關係
3.查看內存圖形
表明當前對象自己
有時候須要把當前調用對象進行傳遞,那麼就可使用this替代當前調用對象
在構造器中可使用this([參數])調用本類的其餘構造器
指代父類
super() 調用父類的構造器
super()若是放在子類中調用,只能放在子類構造器代碼的第一行
只要使用new關鍵字,就是建立一個新的對象
要注意一個問題.不要以爲有時候參數須要一個對象,就直接new 一個對象傳過去
1.靜態的屬性和靜態的方法屬於整個類
2.靜態的值只有一個(基本數據類型能夠看出此特色)
3.靜態的值只會初始化一次(引用數據類型)
4.靜態屬性,方法或者靜態塊會在jvm加載的時候就加載
5.靜態變量不能加在方法裏面
6.靜態方法不能重寫
通常狀況下,靜態的常量屬性,咱們通常寫爲 public static final 數據類型 大寫常量名 = 值
判斷某個對象是否是某一個類型
1.能夠用來修飾變量,若是修飾變量,這個變量咱們就稱之爲常量,值不能被修改,並且常量必須賦初始值,通常狀況下,常量咱們會定義爲 public static final 數據類型 大寫常量名 = 值
2.若是final修飾方法,表示這個方法不能被重寫(實現)
3.若是final修飾類,表示這個類不能被繼承
全部類的父類
組合(has-a):一個類是另外一個類的屬性
依賴(user-a):一個類是另一個類方法的參數
1.抽象方法必定在抽象類中
2.抽象類和抽象方法確定是被abstract修飾的
3.抽象類不能夠用new關鍵字實例化,實例化一個抽象類沒有任何意義
4.若是必定要用抽象類,那麼可使用多態的方式
5.雖然抽象類不能實例化,可是也是有構造器的
6.抽象方法不能被private修飾
7.抽象方法不能被static修飾
總結:1.抽象類就是用來被繼承的 2.抽象方法就是用來被實現的 3.實現多態
1.接口中的變量所有是靜態常量
2.接口中的方法默認是抽象方法
3.JDK1.8以後能夠手動聲明默認方法和靜態方法
4.接口能夠多實現,一個類能夠實現多個接口
5.接口與接口之間使用extends