面向對象的開發方法把軟件系統看成各種對象的集合,對象就是最小的子系統,一組相關的對象能夠組合成更復雜的子系統。面向對象的開發方法將軟件系統看成各種對象的集合,接近人的自然思維方式。
對象是對問題領域中事件的抽象。對象具有以下特性:
1) 萬物皆為對象。問題領域中的實體和概念都可以抽象為對象。例如學生,成績單、教師、課和教室。
2) 每個對象都是惟一的。正如世界上不存在一模一樣的葉子。(在Java內的體現為每個對象的類名不能相同。這里的類名指的是全路徑的名稱,比如java.lang.Number和com.us.demo.Number兩者雖然名稱都是Number類,但是類的全路徑名稱不同,所以這樣的命名是合理的。)
3) 對象具有屬性和行為。
例如小張,性別女,年齡22,身高1.6m, 體重40kg, 能夠學習,唱歌。小張的屬性包括姓名、性別、年齡、身高和體重,行為包括學習、唱歌。
例如一部手機,牌子是諾基亞、價格是2000元,銀白色,能夠拍照、打電話和收發短信等。這部手機的屬性包括品牌類型type、價格PRice和顏色color,行為包括拍照takePhoto(),打電話call(),收發短信receiveMessage()和發短信sendMessage()。
4) 對象具有狀態。狀態是指某個瞬間對象的各個屬性的取值。對象的某些行為會改變對象自身的狀態,即屬性的取值。
“` 例如小張本來體重為40kg,經為減肥后,體重減到45kg.
肥胖狀態: 40kg | | 減肥行為 | 肥胖狀態: 35kgpublic boolean reduceWeight(int oldWeight, int nowWeight){ // 減肥成功操作 ,將減肥的成果作為布爾類型返回出來。 } “`
5) 每個對象都是某個類的實例。小張和小王都屬于學生類、中國和美國都屬于國家類、中文和英文都屬于語言類。
類是具有相同屬性和行為的對象的集合。
同一個類的所有實例都有相同屬性,但屬性取值不一事實上相同,但是它們的狀態不一定相同。例如小張和小王都屬于學生類,都有姓名、性別、年齡、身高和體重這些屬性,但是他們的屬性取值不同。
同一個類的所有實例都有相同行為,意味著它們具有一些相同的功能。
類是一組具有相同屬性和行為對象的模板。面向對象編程的主要任務就是定義對象模型中的各個類。
package sample; // 常有的Java內的Bean類 也叫Model類 或者 POJO類 public class Teacher { /**attributes of a teacher*/ private String name; private int age; private double salary; /** Creates a new instance of Teacher */ public Teacher(String name, int age, double salary) { this.salary = salary; this.age = age; this.name = name; } /**Operations on properties */ /** get the name of this teacher */ public String getName() { return name; } /**get the salary of this teacher */ public double getSalary() { return salary; } /**get the age of teacher teacher */ public int getAge() { return age; } …… }代碼解析:
1) package sample; 包聲明語句,將Java類放到特定的包中,便于類的組織、權限訪問和區分名字相同的類。
2) public class Teacher {…} 類的聲明語句,類名為Teacher, public修飾符意味著這個類可以被公開訪問;
聲明類的格式:
class 類名 { 類內容 }3) private String name; 類的屬性(也稱為成員變量)的聲明語句;Teacher類有一個name屬性,字符串類型,private修飾符意味著這個屬性不能被公開訪問。
4) public String getName() { return name; } 方法的聲明語句和方法體。方法名為getName,不帶參數,String表明返回類型為String。public表明這個方法可以被公開訪問。getName后緊跟的大括號為方法體,代表getName的具體實現。
聲明方法的格式:
返回值類型 方法名 (參數列表) { 方法體 }返回值類型是方法的返回數據的類型, 如果返回值類型為void, 表示沒有返回值。方法名是任意合法的標識符;一般的類名為單詞的首字母大寫,一般的方法名為首個單詞的首字母小寫,其余單詞的首字母大寫。參數列表可包含零個或多個參數,參數之間以逗號”,”分開。可以使用可變參數類型。方法體每個語句用”;”結束;方法體中使用return語句返回數據或結束本方法的執行;注:不介紹構造方法。在面向對象章節會提到。
main()方法是Java應用程序的入口點,每個Java應用程序都是從main()方法開始運行的。作為程序入口的main()方法必須同時符合以下幾個條件:
用public static修飾;返回類型為void;方法名為main;參數類型為String[]; 包含main方法的類又叫主程序類。Java程序啟動后,就會運行方法的主程序類。
類創建好之后,通過new關鍵字創建具體對象。它有以下作用:
為對象分配內存空間,將對象的實例變量自動初始化為其變量類型的默認值;分配的指針通常存在堆內,分配的對象實例的空間通常存在于棧內;
如實例變量顯示初始化,將初始化值賦給實例變量;調用構造方法;(具體的對象實例的生車過過程我們會在下一小節詳細的闡述。)返回對象的引用;類是對象的模板。實例約等于對象。
類: 具有相同屬性和行為的對象的集合。對象: 問題領域中的實體和概念都可以抽象為對象。實例: 每個對象都是類的實例。實例相當于 適用于某些類的模板的對象。屬性: 也就是類的固有屬性和特征。行為: 類的特有操作,Java內也稱之為方法。[1]. Java內多態的理解
新聞熱點
疑難解答