面向?qū)ο蟮乃拇笾е?
- 抽象 - 定義一個(gè)類(lèi)的過(guò)程就是一個(gè)抽象的過(guò)程(數(shù)據(jù)抽象民效、行為抽象)
通過(guò)抽象我們可以將數(shù)據(jù)和操作數(shù)據(jù)的方法以"對(duì)象"的概念綁定到一起
抽象的過(guò)程是一個(gè)仁者見(jiàn)仁智者見(jiàn)智的過(guò)程,對(duì)同一個(gè)對(duì)象做抽象可能會(huì)產(chǎn)生不同的結(jié)果 - 封裝 - 隱藏一切可以隱藏的實(shí)現(xiàn)細(xì)節(jié)洼哎,只向外界提供最簡(jiǎn)單的編程接口
- 繼承 - 從一個(gè)已有的類(lèi)創(chuàng)建新類(lèi)的過(guò)程酸茴,提供繼承信息的叫父類(lèi)(超類(lèi)分预、基類(lèi))
得到繼承信息的叫子類(lèi)(派生類(lèi)、衍生類(lèi)),繼承是實(shí)現(xiàn)代碼復(fù)用的一種手段. - 多態(tài) - 同樣的引用類(lèi)型調(diào)用相同的方法但是做了不同的事情
實(shí)現(xiàn)多態(tài)有兩個(gè)關(guān)鍵步驟: 1.方法重寫(xiě) ; 2.對(duì)象造型
我們能夠操控的內(nèi)存:
棧 - 快薪捍、小 - 臨時(shí)變量/局部變量
堆 - 稍慢笼痹、大 - 對(duì)象
方法區(qū) - 代碼配喳、常量
temp在棧上 它保存了堆上的Cat對(duì)象的地址
通過(guò)temp就可以找到堆上的對(duì)應(yīng)的Cat對(duì)象并給對(duì)象發(fā)消息
所以我們通常把對(duì)象類(lèi)型的變量稱(chēng)為對(duì)象的引用
Java中的類(lèi)型就分為兩大類(lèi):基本數(shù)據(jù)類(lèi)型(8種)和枚舉類(lèi)型
引用類(lèi)型
同樣的類(lèi)型調(diào)用相同的方法(發(fā)同樣的消息)
但是用了不同的事情 - 這就是多態(tài)(polymorphism)如何實(shí)現(xiàn)多態(tài):
1.方法重寫(xiě) - 子類(lèi)在繼承父類(lèi)的過(guò)程中對(duì)父類(lèi)的方法給出自己的實(shí)現(xiàn)版本
2.對(duì)象造型 - 用父類(lèi)型的變量保存子類(lèi)對(duì)象instanceof運(yùn)算符可以判斷對(duì)象是不是某種類(lèi)型
該運(yùn)算符在程序運(yùn)行時(shí)判定對(duì)象的類(lèi)型 - RTTIJava中有4種訪問(wèn)修飾符:
private<default<protected<public