對象與類


  在學習類和對象之前,我們先來回顧下以前學習過的知識,首先我們看下這張圖這個人是誰?

  始皇帝最大的貢獻是什么呢?

  始皇帝還做了更重要的事情

  度量衡的統一大大提高了中國人生產力的效率。

  那么看完這些內容后呢,我們來回顧一下前面學習的編程語言的基本數據類型。

基本數據類型及String

byte              存儲值范圍          整數-128~127

short             存儲值范圍          整數-32768~32767

int                 存儲值范圍          整數-21474483648~21474483647

long              存儲值范圍          整數-9223372036854775808~9223372036854775807

float              存儲值范圍          浮點數,小數點可以精確到6位

double          存儲值范圍          浮點數,小數點可以精確到15-16位

char              存儲值范圍          單個字符,用’’單引號引起來,‘\u0000’~’\uFFFF’

boolean         存儲值范圍          boolean狀態,取值true或false

String            存儲值范圍          字符串,用””雙引號引起來的字符串都可以存

  一般高級編程語言都具有這些類型。其實我們描述現實生活中的任何事物都可以通過這些基本數據類型去描述,大家想一下:

如果一個新的事物不是一個基本數據類型怎么辦?

  現實生活中任何復雜的數據類型都是由基本的數據類型組成的。有的同學呢對這個觀點抱有疑問,我們來回顧一下,這個是我們小學的數學。

先假設你有一只兔子。

 

假設有人又給了你另一只兔子。

 

現在,數一下你所擁有的兔子數量,你會得到結果是兩只。也就是說一只兔子加一只兔子等於兩只兔子,也就是一加一等於二。

                      1 + 1 = 2

這就是算術的運算方法了。

那么,現在你已經對算術的基本原理有了一定了解,就讓我們來看一看下面這個簡單的例子,來把我們剛剛學到的知識運用到實踐中吧。

 

好,大家看到這一堆運算公式相信大家已經崩潰了,但是它最基本的數理基礎還是1 + 1 = 2.

我們再來看例外一個案例

 

有沒有3元的RMB呢?為什么沒有90塊的面額?

  其實我們只要基本數據類型定義好,任何復雜的數據類型都可以用基本的數據類型去表示。

  面向對象就是使用對象進行程序設計。對象代表現實世界中可以明確標識的一個實體。例如:一個學生,一張桌子,一個圓,一個按鈕甚至一筆貸款都可以看着一個對象。每個對象都有自己獨特的標識、狀態和行為。

分類是人類認識客觀世界的基本方法,人類認識客觀世界是把具有相同性質的對象抽象成類。例如動物,植物,人類,鳥類。

  使用一個通用類來定義同一類型的對象(面向對象方法中的類描述了問題空間中一組由相同的屬性(attribute)和行為的對象。)類是一個模板,藍本或者說是合約,用來定義對象的數據域是什么以及方法是做什么的。一個對象是類的一個實例。可以從一個類中創建多個實例。類和對象之間的關系類似於⬇

  可以用一種配方做出任意多的冰淇淋處來。下圖展示名為Circle的類和它的三個對象。

接下來我們通過幾個實際案例來講解如何用基本的數據類型描述復雜的事物。

  用類和對象表示現實世界,用消息和方法來模擬現實世界

  • 一個對象的狀態(state,也稱未特征(property)或屬性(attribute))是由具有當前值的數據域來表示的。例如:圓對象具有一個數據域radius,它是標識圓的屬性。一個矩形對象具有數據域width和height,它們都是矩形的屬性。
  • 一個對象的行為(behavior,也稱為動作(action))是由方法定義的。調用對象的一個方法就是要求對象完成一個動作。例如:可以為圓設置半徑,可以計算圓的面積,還可以獲取它的周長等。

  Java類使用變量定義數據域,使用方法定義動作。除此之外,類還提供了一種稱為構造方法(constructor)的特殊類型的方法,調用它可以創建一個新對象。構造方法本身是可以完成任何動作的,但是設計構造方法是為了完成初始化動作,例如:初始化對象的數據城。

Class Circle{
       //數據域,描述對象的屬性,表示半徑
       double radius = 1;

       // 構造方法
       Circle(){

       }
       // 構造方法
       Circle(double newRadius){
              radius = newRadius;
        }

        //返回這個圓的面積
        double getArea(){
           return radius * radius * Math.PI;
        }

        //返回這個圓的周長
        double getPerimeter(){
           return 2 * radius * Math.PI;
        }

        //給這個圓對象設置一個新的半徑
        void setRadius(double newRadius){
           radius = newRadius;
        }

}                             

  Circle類與目前所見過的所有其它類都不同,它沒有main方法,因此是不能運行的,它只是對圓對象的定義。

  類的模板和對象的圖示可以使用統一建模語言UML的圖形化符號進行標准化,如下圖,這種表示方法稱為UML類圖或簡稱為類圖。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM