浅谈《think in java》:一 对象导论总结
?
清單1. 抽象機(jī)制,面向?qū)ο蟪绦蛟O(shè)計(jì)方式
java所基于Smalltalk的特性表現(xiàn)一種純粹的面向?qū)ο笤O(shè)計(jì)方式:
萬物都是對象
程序是對象的集合(容器),他們通過發(fā)送消息(發(fā)送請求)來告知彼此所要做的。
每個(gè)對象有自己有其他對象所構(gòu)成的儲存(java中的所有基類是Object)
每個(gè)對象都擁有類型type
某一個(gè)特定類型所欲哦對象都可以接收同樣的消息。
?
清單2.對象提供服務(wù),被隱藏的具體實(shí)現(xiàn)
| ? Light ? |
| ? on() ? off() |
??對象Light
—> 接口
?
Light light = new Light(); light.on();
這里,Light對象就像服務(wù)者提供了服務(wù)(接口):on(),off()
服務(wù)中,只給客戶端程序員接口,因?yàn)槔锩孢€有類創(chuàng)建者的隱藏代碼:
1> 類創(chuàng)建者任意調(diào)試修改隱藏代碼,對該類服務(wù)無影響。(安全性)
2> 隱藏代碼通常是對象內(nèi)部脆弱部分,隱藏后減少程序的bug。
?
清單3.復(fù)用--組合,聚合(has-a)
? ? ? ? ? ?
現(xiàn)有類 —> (合成新類時(shí))組合 ? ? —> (組合動態(tài)發(fā)生)聚合
|組合存在著 “擁有關(guān)系”
?
清單4.繼承,多態(tài),范型,容器,參數(shù)化
繼承:基類表示系統(tǒng)中某些對象的核心概念,而導(dǎo)出類是具體實(shí)現(xiàn)。bruce說過:對于使用面向?qū)ο笤O(shè)計(jì)的人們來說,困難之處是從開始到結(jié)束過于簡單。(滿懷信心)
繼承例子不說了,下面討論下
多態(tài):
package sedion.li.test;public class Shape {public void show(){System.out.println("shape");}public static void doSomthing(Shape shape){shape.show();}public static void main(String[] args) {Circle circle = new Circle();doSomthing(circle);} } class Circle extends Shape{public void show() {System.out.println("circle");} }
Def:向上轉(zhuǎn)型
通俗地講即是將子類對象轉(zhuǎn)為父類對象。此處父類對象可以是接口。
doSomething 可以發(fā)給Shape的任何消息,Circle都可以接收到。所以這里會打印出 ? ? circle
容器:只是輔助工具類對象的集合。
范型(參數(shù)化):
“一對尖括號,中間包含類型信息”
ArrayList<Shape> shapes = new ArrayList<Shape>();
清單5:對象創(chuàng)建及生命周期
java中,
在被稱為堆的內(nèi)存池中創(chuàng)建對象(new)。java完全采用了動態(tài)內(nèi)存分配方式。
生命周期,不得不提到j(luò)ava的“垃圾回收器”機(jī)制:
自動發(fā)現(xiàn)對象不再被使用,并繼銷毀。(提供了更高層的保障,避免內(nèi)存泄漏)。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Alandre/p/3453010.html
總結(jié)
以上是生活随笔為你收集整理的浅谈《think in java》:一 对象导论总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx负载均衡配置实例详解
- 下一篇: 黄山风景区离上海有多远