Think in java 第一章 總結隨筆
前言
本章的標題是物件導論。原作者可能想要傳達的是表述物件的概念,以及引入OOP的思想。但是我在看完第一章的時候,著實發現本章內容之廣,已經涵蓋了本書許多的章節了,但是沒有詳細的介紹。應該是後面做詳解的。先來理解物件導論這四個字。 物件:資料封裝形成的實體就是物件。物件是類的例項化。在生活中一個實體就可以看作是一個物件,例如桌子、凳子、一個人,一條魚等等。萬物皆物件。 導論:論述全文或全書的中心思想。抽象過程
"所有程式語言都提供抽象機制"。這句可以說是本節的精要,何為抽象?抽象機制的作用?帶著類似的問題去學習還是很有必要的。
人們所能夠解決的問題的複雜性直接取決於抽象的型別和質量。
Smalltalk(
1)萬物皆是物件
2) 程式是物件的集合,它們通過傳送訊息來告知彼此所要做的
3) 每個物件都有自己的有其他物件所構成的儲存
4) 每個物件都擁有其型別
5)某個特定型別的所有物件都可以接收到同樣的訊息
每個物件都有一個介面
Person |
Name() Speak() Height() |
每個物件都提供服務
在開發或理解一個程式設計時,最好的方法就是將物件相像為”服務提供者”。生活中也是每個事物(物件)都是服務者,例如椅子、拖把、電飯煲等等都在提供服務只是功能不同而已。
附帶的好處就是,提高物件的內聚性。
被隱藏的具體實現
類建立者(建立新資料型別的程式設計師)需要向客戶端程式設計師(試用資料型別的類消費者)暴露必須的部分而隱藏其他的部分。為了阻止所有的東西都赤裸裸的暴露出來,其中就引入了訪問控制,關於訪問許可權的介紹本書在第六章有詳盡的介紹。本節只對為何要進行具體實現的隱藏作了介紹。其目的是防止客戶端程式設計師毀壞到類。下面的連結是關於訪問許可權中關鍵字的內部設定邊界http://blog.csdn.net/the_flying_pig/article/details/73135553
複用具體實現
最簡單的複用就是一個類中的成員包含另一個類的物件。
複用---組合、聚合(has-a)
組合:使用現有的類合成新的類。
聚合:組合動態發生。
繼承
基類和子類產生差異的方法有兩種
1) 在子類中新增新的方法
2) 覆蓋(overriding)
伴隨多型的可互換物件
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");
}
}
本節在對多型介紹的時候,只是簡單的提到了向上轉型的概念即將匯出類看做是它的基類的過程稱為"向上轉型",其實就是子類轉父類。本書的第八章會對多型進行詳盡的講解,到時應該會重新講解向上轉型的含義吧。
單根繼承的結構
所有的類都繼承自單一的基類 Java --- <Object>,
該節列舉了單根繼承帶來的優點:
1)所有物件都具有一個共同的介面,將提高生產率。
2)所有物件都具備某些功能,這使得在你的系統中可以在每個物件上執行某些基本操作。
3)所有物件都可以很容易的在堆上建立。
4)使得垃圾回收的實現更為簡單。這個本人就不懂了。看目錄本書在第五章會講到垃圾回收機制。就我目前的瞭解java是動態記憶體分配的方式,當記憶體使用較大時,會呼叫垃圾回收機制,迴圈遍歷記憶體中的物件,將沒有引用的物件清除掉。
容器(集合)
建議大家多去修行一下集合,可謂重點中的重點,推薦去看看資料結構一塊的書,看完會發現收益良多,一種豁然開朗的感覺(針對像博主這樣非科班專業的同學去看)。物件的建立和生命期
物件置於:堆疊 或靜態儲存區域;這將存貯空間分配和釋放置於優先考慮位置;在程式設計是需要確切的知道物件的數量、生命週期、型別;查詢和釋放不需要過多時間。
堆(heap)記憶體池:動態的建立物件; 相對而言,查詢和釋放需要更多的時間;Java採用了動態的記憶體分配方式。
垃圾回收機制:所有的物件都是單根繼承 和 只能以一種方式建立物件<在堆上建立>這兩個特性結合起來。
物件的生命期:
後面幾個小節覺得沒有必要再說,雖然很重要,但博主現在的水平也不知道說什麼。
總結
對於設計良好的程式,通過閱讀它就可以很容易地理解其程式碼。
相關推薦
Think in java 第一章 總結隨筆
前言 本章的標題是物件導論。原作者可能想要傳達的是表述物件的概念,以及引入OOP的思想。但是我在看完第一章的時候,著實發現本章內容之廣,已經涵蓋了本書許多的章節了,但是沒有詳細的介紹。應該是後面做詳解的。先來理解物件導論這四個字。 物件:資料封裝形成的實體就是物件。物件是
Think IN JAVA 第一章物件入門
第1章 物件入門 “為什麼面向物件的程式設計會在軟體開發領域造成如此震憾的影響?” 面向物件程式設計(OOP)具有多方面的吸引力。對管理人員,它實現了更快和更廉價的開發與維護過程。對分析與設計人員,建模處理變得更加簡單,能生成清晰、易於維護
Think In Java 第九章 9.2 介面 知識總結
1.abstract 關鍵字允許人們在類中建立一個/多個沒有任何定義的方法。。2.interface這個關鍵之產生一個完全抽象的類。它允許建立者確定方法名,引數列表,返回型別,但是沒有任何方法,介面只提供了形式,沒有任何的具體實現 3.interface 相當於 class 前面可以加上 pub
第一次讀Think In Java收穫
新進公司的初級程式設計師,看了公司的專案,目前沒啥事做就在看Think In Java,然後想把自己的收穫記錄起來。這是本人第一次寫部落格。 2018年5月25日 &
201711671118《Java程式設計》第一章總結
教材學習內容總結: 1.一個檔案只能有1個public類,且原始檔名與public類名相同(區分大小寫),如果原始檔中無public類則只要和檔案內某個類名相同即可。 2.JAVA反編譯其是javap.exe。如想反編譯Hello.class,可使用javap Hello.clas
《Think In Java》閱讀筆記 ·第一卷
過載 基本型別的過載 當傳入較小精確度的數值時,會呼叫擁有最接近該精確度形參的方法。 當傳入較大精確度的數值時,需要至少窄化轉換成所有過載方法中最大精確度的數值,否則編譯器將報錯。 不能通過方法的返回值來區分過載方法 構造器的過載 在構造器中可以呼叫
think in java第十五章關於網路程式設計的讀書筆記
對於java的網路程式設計書中討論的全部歸納起來有Socket的使用,DatagramSocket的使用,java與CGI的配合使用,java連線資料庫以及java中呼叫遠端方法。 首先是Socket的使用,對於服務端來說,應該宣告的是ServerSo
Think In Java 第四章 控制執行流程
?普通for迴圈在遍歷集合時使用下標來定位集合中的元素,java在jdk1.5中開始支援foreach迴圈,foreach在一定程度上簡化了對集合的遍歷,在遍歷陣列、集合的時候,foreach擁有不錯的效能。但是foreach不能完全代替for迴圈。foreac
構建之法第一章總結
運營 連續 時間 工程包 需求 開發流程 實踐 復雜 困難 軟件工程是把系統的,有序的,可量化的方法應用到軟件的開發,運營和維護上。軟件工程包括:軟件需求分析,軟件構建,軟件設計,軟件測試和軟件維護。 首先,從軟件二字理解,軟件是可以運行在計算機上及電子設備中的指
Java第一章----Java概述+環境搭建
http java_home 它的 rac 靜態 只需要 階段 集成開發 down 寫在前面的話: Java基礎的東西看過好幾遍,但是過一段都就忘記了,所以這次我決定花費一些時間整理一個系列博客供以後方便查閱。此系列根據Java編程思想+Java核心技術兩本書整理而來,
工廠模式(think in java中的設計模式)
org 我們 import lac otf 返回值 類型 int ava 工廠模式:工廠模式是利用工廠類的工廠方法創建對象的一種設計模式,目的是創建對象,但是很多時候創建對象我們會考慮很多其他因素~~~~比如限定輸入,限定返回值是否某個,比如在創建的過程中進行一些判斷,通過
叠代器模式(think in java中的設計模式)
一個 div 封裝 imp 叠代器 方法 println rri 數字 叠代器模式:用來叠代一個容器集合數組的一種模式。可能大家很多時候是用for循環進行叠代的,但是實際上for循環內部不能使用remove方法,但是叠代器可以,這是因為叠代器內部進行了該方法的邏輯處理。同樣
模板方法模式(think in java中的設計模式)
方法 bst pac code pri ack 單點 size clas 模板方法模式:模板方法模式顧名思義就是一種構造模塊化的設計模式。將一次行為分為多種行為,靈活的調用不同模塊進行工作。比如在飯店吃飯,分為:點菜,吃飯,買單等行為無論什麽飯店大致都是這三種行為。因此我們
大道至簡java第一章偽代碼
void clas args 大道至簡 static sha ati str break Public class yugongyishan { //愚公移山的目的:指通豫南,達於漢陰 //愚公移山的方法:叩石墾壤,箕備運於渤海之尾 { Public static voi
JAVA第一章整理實驗
麻煩 main 3.4 編譯 老師 mage 程序 double family 1 JAVA中是否可以存在多個公有類 答案是可以,就是在公有類中在套用一個公有類,在Eclipse上輸入老師給的那個例子,能夠成功運行,說明就是可以的。 2 把main()方法的返回值void改
【轉】我為什麽把think in java 讀了10遍
很好 這樣的 是的 就會 十分 基礎 網絡 的確 找工作 我在想寫這篇博文之前,就曾經對我媳婦(她是做web前端的)講,我把think in java看了幾次幾次,媳婦那時就用很羨慕和莫名的眼神看著我說,你真有毅力,我當時就蒙了,我以為她會說,你現在基礎一定很好,很強大之類
<Thinking in java 第二章> 一切都是對象
運算 參數 區分 bigint 高精度 簽名 重載 對象 通過 P23——Java提供了兩個用於高精度計算的類:BIgInteger和BigDecimal,能作用於int和float的操作,也同樣能作用於BigInteger和BigDecimal。只不過必須以方法調用的方式
【Think in java讀書筆記】序列化
轉換 window 讀書筆記 對象 序列 執行 輕量 body 調用 Java的對象序列化將那些實現了Serializable接口的對象轉換成一個字節序列,並能夠在以後將這個字節序列完全恢復成為原來的對象。 序列化機制能自動彌補不同操作系統之間的差異,也就是說在Window
Thinking in Java 第二章學習筆記
包含 的確 隨著 c++ 一個 變化 new 寄存器 我們 Java雖基於C++,但相比之下,Java是一種更加純粹的面向對象程序設計語言。 在Java的世界裏,幾乎一切都是對象,而Java中的全部工作則是定義類,產生那些類的對象,以及發送消息給這些對象。 盡管
Think In Java讀書筆記:內部類覆蓋及其初始化
圖片 10.10 clas 構造 col 向上轉型 pan center 類初始化 本文相關章節:第十章 內部類 10.10 內部類可以被覆蓋嗎 在讀至本節第二個範例代碼時(及下方的代碼),我對輸出結果中的第一個“Egg.Yolk()”很不理解,為什麽它會第一個地方