物件導向是一種思想,把複雜事物簡單化,把面向過程的執行者變成了指揮者。過程其實就是函式,而物件將函式和一些內容封裝。把事物的屬性和行為封裝成物件,再把物件抽象成類。
類的訪問修飾符有public和final。而成員的修飾符有public private protected static 。
成員變數和區域性變數的區別:成員變數定義在類內方法外,在本類中有效,存在於堆記憶體;而區域性變數存在於方法中、引數上、語句中,在定義時到大括號有效,存在於棧記憶體。
建構函式和普通函式的區別:建構函式與類同名,沒有返回值,只在建立物件的時候呼叫一次;普通函式有返回值,可由物件多次呼叫。
構造**塊是給所有物件初始化,而建構函式則是給相對應的物件初始化。
person p=new person(); 在記憶體中:1,先找到person的位元組碼檔案,載入到記憶體。2,執行main方法時會在棧記憶體中開闢一片空間,在棧區中分配了乙個變數p。3,在堆記憶體中開闢實體空間,並分配乙個記憶體首位址值。 4,在空間中進行屬性的空間分配,並進行預設初始化。5,對空間中的屬性進行顯示初始化。6,屬性進行構造**塊初始化。7,呼叫該實體對應的建構函式進行建構函式初始化。8,把首位址值賦給p,則p指向了該物件。
封裝用於隱藏物件的實現細節。僅對外提供公共訪問方式。好處是將變化隔離,提高復用性,安全,便於使用。
static:所有物件共享的成員可以用靜態修飾,成員可以用物件、也可以用類名呼叫。靜態隨著類的載入而存在,優先於物件,所以在靜態方法中不能存在非靜態成員。this和super也不可以。 好處是:節約記憶體 弊端是:存在時間太長。
this和super不可以同時出現在建構函式中,因為它們都只能在第一行。子類的建構函式中,第一行預設是super(),即呼叫父類的空參建構函式,若父類沒有空參建構函式,則需顯示的呼叫相應的父類建構函式。子類之所以呼叫父類的建構函式,是因為子類繼承了父類的成員,要通過呼叫父類構造方法來檢視父類成員的初始化情況。
繼承是「is a」,實現介面是「like a」。
子類方法覆蓋父類方法時,訪問許可權應該大於等於父類,丟擲的異常應小於等於父類異常。
繼承打破了封裝性,所以一些不想被繼承的類,或者一些不想被覆蓋的方法可以用final來修飾。final可以修飾類、方法、變數。
抽象類:抽象類、抽象方法須由abstract修飾。方法只能宣告,沒有方法體。抽象類不可以被建立物件(但是有構造方法,可以給子類進行初始化)。而且抽象類中可以定義非抽象方法。抽象關鍵字不可以和static、private、final。
介面:inte***ce,介面中的成員都有固定的修飾符。成員函式:public abstract 成員變數:public static final。 子類可以單繼承,但是可以多實現。實現介面必須重寫所有的抽象方法,否則類將抽象,無法建立物件。
介面是對外提供的規則,是功能擴充套件,降低了耦合性。
多型:事物的多種形態。前提是必須要有關係:繼承或者實現,通常會有覆蓋操作。 好處:提高了擴充套件性。 弊端:自能訪問父類中存在的方法,不可以訪問子類中特有的方法。多型就是父類的引用接收了子類的物件。
在多型當中,成員變數、靜態函式編譯執行都看左邊。 成員函式編譯看左邊,執行看右邊。
黑馬程式設計師 物件導向
物件導向 1 物件導向 是基於面向過程的一種思想。面向過程 以函式為基礎,關注實現過程。物件導向 以物件為基礎,關注實現結果。2 物件導向的思想特點 a 是一種更符合人們思考習慣的思想。b 把複雜的事情簡單化了。c 把我們從執行者變成了指揮者。舉例 買電腦。洗衣,做飯。旅遊。把大象裝進冰箱。體現 c...
黑馬程式設計師 物件導向思想
物件導向的思想 誰有資料,誰就對外提供操作這些資料的方法。例子1 人在黑板畫圓 public class circle private int radius 1 public circle circlecenter,radius public void draw int circlecenter,i...
黑馬程式設計師 物件導向學習
1.類 物件。人 是類,張三 是 人 這個類的物件。類是抽象的,物件是具體的。按鈕就是類,某個按鈕就是物件。物件可以叫做類的例項 instance 類就像int,物件就像10。欄位field 和某個物件相關的變數 字段就是類的狀態。人這個類有姓名 年齡 身高等字段。類不佔記憶體,物件才佔記憶體。2....