面向對象內存的分析:java
一:內存的分類ide
1:棧(tack)函數
2:堆(heop) this
3: 靜態區對象
4:代碼區繼承
二:引用數據類型內存特色接口
三:引用數據類型傳值的特色內存
四:引用數據類型在做爲參數時的特色get
面向對象的基礎模板
一:三大特徵
1:封裝(抽象)(封裝就是定義一個類,而後給該類的屬性和方法加上訪問控制修飾符 public private..)
2:繼承
2.1:父類(基類 超類)
2.2:子類
2.2.1:子類在同一個包下,能夠訪問父類除了私有private修飾的全部屬性和方法
2.2.2:在不一樣包下,子類只能訪問public修飾的屬性和方法
2.2.3:子類內部,不一樣包狀況下,能夠訪問protected修飾的屬性和方法,可是不能訪問默認的修飾符修飾的屬性和方法
2.2.4:子類在初始化時,會先調用父類默認不帶參數的構造器,若是沒有報錯,只有修改
1.將父類添加一個無參數的構造器
2.子類構造器中手動使用 super() 聲明調用哪一個父類的構造器
2.3: extends
3:多態(運行時加載)
3.1:繼承
3.2:重寫
3.3:父類引用指向子類對象
二:類(簡單理解就僅僅只是一個模板)
1:成員變量,全局變量,屬性 (當對象初始化以後,成員變量就會有初始值
String null
整型 0
浮點型 0.0
boolean false
char (char)0)
2:行爲,動做,函數,方法(全部和動做相關的,都應該放入到方法中)
3:經過類建立對象(new)
三:對象
1:對象是類的實例
2:也具備屬性和方法
3:對象都是屬於某個類
4:一切皆對象
5:每一次(new)都會產生一個新的對象
四:重要的知識點和關鍵字
1:(this)
1.1:表明當前對象自己
1.2:有時候須要把當前調用對象進行傳遞,那麼就可使用(this)替代當前調用對象
1.3:在構造器中可使用 this(參數)調用本類其餘構造器
2:(super)
2.1: 指代父類
2.2:super()調用父類的構造器
2.3:super()若是放在子類中調用,只能放在子類構造器代碼的第一行
2.4:使用super()點 能夠在子類中調用父類中的方法
3:重載(是指一個類中具備相同的方法名稱,可是參數列表不一樣)
4:重寫(override)
4.1:繼承
4.2:子類重寫父類的方法
4.3:方法名,參數類型,參數個數,返回值同樣
4.4:只是方法名同樣,其餘的有不同,就是子類的重載
4.5:注意 父類private修飾的方法,子類不能重寫
4.6:子類重寫方法的訪問修飾符可見度,必須比父類方法的訪問修飾符可見度高或者同樣
5:instanceof(判斷某個對象是不是某個類型)
6:對象轉型
6.1:轉型條件
6.1.1:有繼承關係
6.1.2:有互相引用
6.1.3:要把父類轉型爲子類,父類型必須包含子類型
6.2:上轉型
6.3:下轉型
7:(new)
7.1:只要使用 new 關鍵字,就是建立一個新的對象
7.2;要注意一個問題,不要以爲有時候參數須要一個對象,就直接 new 一個對象傳過去
8:構造方法(構造器,構造函數)
9:訪問修飾符
9.1:public(公開的)
9.2:private(私有的,只能在類的內部使用)
9.3:protected(受保護的,在不一樣包下面的訪問規則和public不同,不一樣包不能夠訪問.在不一樣包下繼承時,與friendly不一樣)
9.4:friendly(默認的,在不一樣包下面的訪問規則和public不同,不一樣包不能夠訪問.)
9.5:可見度(public>protected>friendly>private)
10:javabean
10.1:全部屬性都是private
10.2:爲每一個屬性創建setter和getter方法
10.3:這個其實就是爲了之後裝數據用的一個類
11:final
11.1:常量不能進行自增和自減
11.2:final修飾類不能被繼承
11.3:final修飾方法不能被重寫
12:static
12.1:靜態的屬性和方法屬於整個類
12.2:靜態的值只有一個(基本數據類型能夠看出此特色)
12.3:靜態的值只會初始化一次(引用數據類型)
12.4:靜態屬性方法或靜態塊會在JVM加載的時候就加載了
12.5:通常狀況靜態的常量屬性,咱們通常書寫爲 public static final 數據類型 大寫常量名=值
13:類和類的關係
13.1:組合(緊密has-a,一個類是另外一個類的屬性)
13.2:依賴(use-a 一個類是另一個類方法的參數)
14:object(全部類的父類)
15:抽象類
15.1:abstract
15.2:抽象類不能夠用new關鍵字實例化,實例化一個抽象類沒有任何意義、
15.3:抽象類不能實例化可是有構造器
15.4:抽象類和抽象方法,必須被abstract修飾
15.5:若是要用抽象類,可使用多態
15.6:抽象類是用來被繼承的,抽象方法就是用來實現的,實現多態
16:抽象方法
16.1:抽象方法必定在抽象類中
16.2:不能被private修飾
16.3:不能被static修飾
16.4:沒有{ }
16.5:子類必須實現抽象方法
17:接口(interface)
17.1:implements
17.2:接口中的變量全是靜態變量
17.3:接口中的方法默認是公開抽象(public abstract),就算不寫,也會自動加上
17.4:jdk 1.8 之後能夠手動聲明默認方法和靜態方法
17.5:接口能夠多實現,一個類能夠實現多個接口
17.6:接口與接口之間使用extends
17.7:一個子類能夠繼承一個父類,實現多個接口
18.8:接口沒有構造器