面向對象編程(上)

面向對象編程(上)

面向過程(POP) 與 面向對象(OOP)

面向過程(Procedure Oriented Programming):強調的是功能行爲,以函數爲最小單位,考慮怎麼作java

面向對象(Object Oriented Programming):將功能封裝進對象,強調具有了功能的對象,以類/對象爲最小單位,考慮誰來作編程

面向對象的三大特徵

  • 封裝 (Encapsulation)
  • 繼承 (Inheritance)
  • 多態 (Polymorphism)

面向對象分析方法分析問題的思路和步驟:

  1. 根據問題須要,選擇問題所針對的現實世界中的實體
  2. 從實體中尋找解決問題相關的屬性和功能,這些屬性和功能就造成了概念世界中的類
  3. 把抽象的實體用計算機語言進行描述,造成計算機世界中類的定義。即藉助某種程序語言,把類構形成計算機可以識別和處理的數據結構
  4. 類實例化成計算機世界中的對象

類和對象

  • 類(Class)對象(Object)是面向對象的核心概念設計模式

    • 類是對一類事物的描述,是抽象的、概念上的定義
    • 對象是實際存在的該類事物的每一個個體,於是也稱爲實例(instance)
  • 「萬事萬物皆對象」數組

常見的類的成員有:數據結構

屬性:對應類中的成員變量
行爲:對應類中的成員方法mvc

類的語法格式

修飾符 class 類名 {
屬性聲明;
方法聲明;
}
/*說明:修飾符public:類能夠被任意訪問
類的正文要用{ }括起來*/

Java自定義類:函數

  1. 定義類(考慮修飾符、類名)
  2. 編寫類的屬性(考慮修飾符、屬性類型、屬性名、初始化值)
  3. 編寫類的方法(考慮修飾符、返回值類型、方法名、形參等)

對象的建立和使用

  • 建立對象語法: 類名 對象名 = new 類名();oop

  • 使用「對象名.對象成員」的方式訪問對象成員(包括屬性和方法)this

類的訪問機制:設計

  • 在一個類中的訪問機制:類中的方法能夠直接訪問類中的成員變量(例外:static方法訪問非static,編譯不經過
  • 在不一樣類中的訪問機制:先建立要訪問類的對象,再用對象訪問類中定義的成員。

內存解析:

  • 堆(Heap)存放對象實例,全部的對象實例以及數組都要在堆上分配
  • 棧(Stack),是指虛擬機棧;虛擬機棧用於存儲局部變量;局部變量表存放了編譯期可知長度的各類基本數據類型(boolean、byte、 char 、 short 、 int 、 float 、 long 、 double)、對象引用(reference類型,它不等同於對象自己,是對象在堆內存的首地址
  • 方法區(Method Area),用於存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯後的代碼等數據

內存解析

匿名對象

能夠不定義對象的句柄,而直接調用這個對象的方法

new Person().shout();

屬性(field)

語法格式: 修飾符 數據類型 屬性名 = 初始化值 ;

屬性的默認初始化

屬性的默認初始化

方法(method)

  • 功能封裝爲方法的目的是,能夠實現代碼重用,簡化代碼

方法的聲明格式:

修飾符 返回值類型 方法名(參數類型 形參1, 參數類型 形參2, ….){
方法體程序代碼
return 返回值;
}
  • 方法中只能調用方法或屬性,不能夠在方法內部定義方法
重載(overload)

概念:在同一個類中,容許存在一個以上的同名方法,只要它們的參數個數或者參數類型不一樣便可

特色:與返回值類型無關,只看參數列表,且參數列表必須不一樣。(參數個數或參數類型)

可變個數的形參

聲明格式:方法名(參數的類型名 ...參數名)

  • 可變參數:方法參數部分指定類型的參數個數是可變多個:0個,1個或多個
  • 可變個數形參的方法與同名的方法之間,彼此構成重載
  • 方法的參數部分有可變形參,須要放在形參聲明的最後
  • 在一個方法的形參位置,最多隻能聲明一個可變個數形參

構造器(構造方法)

做用:建立對象;給對象進行初始化

  • 它具備與類相同的名稱

  • 它不聲明返回值類型。(與聲明爲void不一樣)

  • 不能被static、final、synchronized、abstract、native修飾,不能有 return語句返回值

    語法格式:

    修飾符 類名 (參數列表) {
    初始化語句;
    }

    父類的構造器不可被子類繼承
    一旦顯式定義了構造器,則系統再也不提供默認構造器

關鍵字

this
  • 它在方法內部使用,即這個方法所屬對象的引用
  • 它在構造器內部使用,表示該構造器正在初始化的對象
  • this 能夠調用類的屬性、方法和構造器
  • 當形參與成員變量同名時, 若是在方法內或構造器內須要使用成員變量,必須添加this來代表該變量是類的成員變量
  • 使用this訪問屬性和方法時, 若是在本類中未找到,會從父類中查找
  • this能夠做爲一個類中構造器相互調用的特殊格式
  • "this(形參列表)"必須聲明在類的構造器的首行
package

package語句做爲Java源文件的第一條語句,指明該文件中定義的類所在的包。(若缺省該語句,則指定爲無名包)

格式爲:

package 頂層包名.子包名 ;

包對應於文件系統的目錄,package語句中,用 「.」 來指明包(目錄)的層次

包一般用小寫單詞標識。一般使用所在公司域名的倒置

JDK中主要的包介紹

JDK中主要的包介紹

import

爲使用定義在不一樣包中的Java類,需用import語句來引入指定包層次下所須要的類 或所有類(.*);

語法格式:

import 包名. 類名;

import static組合的使用:調用指定類或接口下的靜態的屬性或方法

封裝與隱藏

  • 程序設計追求「高內聚,低耦合

    • 高內聚 :類的內部數據操做細節本身完成,不容許外部干涉
    • 低耦合 :僅對外暴露少許的方法用於使用
  • 隱藏對象內部的複雜性,只對外公開簡單的接口;通俗的說,把該隱藏的隱藏起來,該暴露的暴露出來。這就是封裝性的設計思想

信息的封裝和隱藏

​ Java中經過將數據聲明爲私有的(private),再提供公共的(public) 方法:getXxx()和setXxx()實現對該屬性的操做,以實現下述目的:

  • 隱藏一個類中不須要對外提供的實現細節
  • 使用者只能經過事先定製好的方法來訪問數據,能夠方便地加入控制邏輯, 限制對屬性的不合理操做
  • 便於修改,加強代碼的可維護性

四種訪問權限修飾符

​ Java權限修飾符public、protected、(缺省)、private置於類的成員定義前, 用來限定對象對該類成員的訪問權限

四種訪問權限修飾符

對於class的權限修飾只能夠用public和default(缺省)
public類能夠在任意地方被訪問
default類只能夠被同一個包內部的類訪問

JavaBean

  • JavaBean是一種Java語言寫成的可重用組件
  • 用 戶能夠認爲JavaBean提供了一種隨時隨地的複製和粘貼的功能,而不用關心任何改變
UML類圖

UML類圖

MVC設計模式

​ MVC是經常使用的設計模式之一,將整個程序分爲三個層次:視圖模型層,控制器層,與數據模型層。這種將程序輸入輸出、數據處理,以及數據的展現分離開來的設計模式 使程序結構變的靈活並且清晰,同時也描述了程序各個對象間的通訊方式,下降了程序的耦合性

MVC設計模式

相關文章
相關標籤/搜索