翁凱-----java課程入門與進(jìn)階1

聽起來蠻有意思的,繼續(xù)看看吧~

類與對象

這部分已經(jīng)學(xué)完了入門課程,聽翁凱老師的課程總有一種很安心的感覺。雖然學(xué)的不是很好,期末考試的編程題并沒有在規(guī)定時間內(nèi)搞定,之后的也有一些問題,但還是想繼續(xù)聽下去,繼續(xù)學(xué)習(xí)。

類定義了對象;對象是類的實(shí)體。
今天老師又用了自動售賣機(jī)當(dāng)例子講解面向?qū)ο蟮木幊趟枷牒徒忉屓绾味x類,成員對象和成員函數(shù),以及對象的初始化。

對象=屬性(數(shù)據(jù))+服務(wù)(操作,函數(shù))
封裝是指將數(shù)據(jù)和對數(shù)據(jù)的操作放在一起。

面向?qū)ο蟮木幊趟枷胫饕紤]兩個事情,第一,有什么東西?第二,能做什么事情?
對于自動售賣機(jī)來說,大概可以說一下的幾個。

price;
balace;
amont;
getmoney();
showtips();
showbalace();
chuhuo();

this是成員函數(shù)的一種特殊固有本地變量。

public class Circle extends Shape {
private int x;
private int y;
private int radius;

  public Circle(int x, int y, int radius)
{
    this.x = x;
    this.y = y;
    this.radius = radius;
}  

構(gòu)造函數(shù):在構(gòu)造的時候會被自動的調(diào)用,不能有返回類型。構(gòu)造函數(shù)與類的名稱一致;

對象交互

好溜,好神奇。 原來這樣就是面向?qū)ο蟮乃伎挤绞絶


時鐘例子.JPG

封裝

封裝,就是把數(shù)據(jù)和對這些數(shù)據(jù)的操作放在一起,并且用這些操作把數(shù)據(jù)掩蓋起來,是面向?qū)ο蟮幕靖拍钪?,也是最核心的概念?/p>

我們有一個非常直截了當(dāng)?shù)氖侄蝸肀WC在類的設(shè)計的時候做到封裝:

  • 所有的成員變量必須是private的,這樣就避免別人任意使用你的內(nèi)部數(shù)據(jù);
  • 所有public的函數(shù),只是用來實(shí)現(xiàn)這個類的對象或類自己要提供的服務(wù)的,而不是用來直接訪問數(shù)據(jù)的。除非對數(shù)據(jù)的訪問就是這個類及對象的服務(wù)。簡單地說,給每個成員變量提供一對用于讀寫的get/set函數(shù)也是不合適的設(shè)計。
private 概念

private 針對類,同一個類的所有對象互相可以訪問private的成員變量以及成員函數(shù)。

當(dāng)你的程序越來越大的時候,你就會需要有一個機(jī)制幫助你管理一個工程中眾多的類了。包就是Java的類庫管理機(jī)制,它借助文件系統(tǒng)的目錄來管理類庫,一個包就是一個目錄,一個包內(nèi)的所有的類必須放在一個目錄下,那個目錄的名字必須是包的名字。
作為初學(xué)者,你可以忽略不看包,反正一切靠Eclipse。但是作為一個Java程序員,你不能不懂包。要不然,在使用別人的類庫和部署你的程序的時候,會遇到不少莫名其妙的麻煩。

對象容器

容器是現(xiàn)代程序設(shè)計非常基礎(chǔ)而重要的手段。

所謂容器,就是“放東西的東西”。數(shù)組可以看作是一種容器,但是數(shù)組的元素個數(shù)一旦確定就無法改變,這在實(shí)際使用中是很大的不足。一般意義上的容器,是指具有自動增長容量能力的存放數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)。在面向?qū)ο笳Z言中,這種數(shù)據(jù)結(jié)構(gòu)本身表達(dá)為一個對象。所以才有“放東西的東西”的說法。

Java具有豐富的容器,Java的容器具有豐富的功能和良好的性能。熟悉并能充分有效地利用好容器,是現(xiàn)代程序設(shè)計的基本能力。

我們首先學(xué)習(xí)的是順序容器,即放進(jìn)容器中的對象是按照指定的順序(放的順序)排列起來的,而且允許具有相同值的多個對象存在。

Java容器實(shí)際上只有三種:Map , List, Set;但每種接口都有不同的實(shí)現(xiàn)版本.它們的區(qū)別可以歸納為由什么在背后支持它們.也就是說,你使用的接口是由什么樣的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的.

容器API類圖
  • List的選擇: 比如:ArrayList和LinkedList都實(shí)現(xiàn)了List接口.因此無論選擇哪一個,基本操作都一樣.但ArrayList是由數(shù)組提供底層支持.而LinkedList是由雙向鏈表實(shí)現(xiàn)的.所以,如果要經(jīng)常向List里插入或刪除數(shù)據(jù),LinkedList會比較好.否則應(yīng)該用速度更快的ArrayList。
  • Set的選擇 HashSet總是比TreeSet 性能要好.而后者存在的理由就是它可以維持元素的排序狀態(tài).所以,如果需要一個排好序的Set時,才應(yīng)該用TreeSet。
  • Map選擇: 同上,盡量選擇HashMap。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,734評論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,811評論 11 349
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,428評論 0 2
  • 單欄布局三欄布局圣杯布局雙飛翼圖片等間距展示
    好奇而已閱讀 316評論 0 0

友情鏈接更多精彩內(nèi)容