chapter7類與面向?qū)ο缶幊蘝第1頁(yè)
chapter7類與面向?qū)ο缶幊蘝第2頁(yè)
chapter7類與面向?qū)ο缶幊蘝第3頁(yè)
chapter7類與面向?qū)ο缶幊蘝第4頁(yè)
chapter7類與面向?qū)ο缶幊蘝第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、面向?qū)ο蟪绦蛟O(shè)計(jì)初步程序設(shè)計(jì)簡(jiǎn)史對(duì)象、類類的定義Java中類、屬性、方法的定義類的構(gòu)造器1面向?qū)ο蟮某绦蛟O(shè)計(jì)程序設(shè)計(jì)簡(jiǎn)史過程式程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì)2面向?qū)ο缶幊袒A(chǔ)面向?qū)ο缶幊痰幕靖拍?對(duì)象具有的特性:物體的組成,也稱為物體的屬性和特點(diǎn);物體的行為,是物體和其他物體的交互以及物體對(duì)內(nèi)部數(shù)據(jù)的處理面向?qū)ο缶幊痰膬?yōu)點(diǎn)(1)提高了程序的可維護(hù)性(2)可重用性高(3)保護(hù)數(shù)據(jù)對(duì)象的抽象:去掉物體中與問題不相關(guān)的部分,保留所需要的類的過程抽象成為方法3class Car int color_number; int door_number; int speed; void brake(

2、) void speedUp() ; void slowDown() 計(jì)算機(jī)中的對(duì)象的原型 現(xiàn)實(shí)生活中的對(duì)象4對(duì)象Everything is Object:萬(wàn)事萬(wàn)物皆對(duì)象。面向?qū)ο蟮木幊蹋∣OP)思想力圖使對(duì)計(jì)算機(jī)語(yǔ)言中對(duì)事物的的描述與現(xiàn)實(shí)世界中該事物的本來面目盡可能的一致。Class/Object:類(class)和對(duì)象(object)是面向?qū)ο蠓椒ǖ暮诵母拍?。類是?duì)一類事物描述,是抽象的、概念上的定義;對(duì)象是實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱實(shí)例(instance)。 5作為對(duì)象藍(lán)本的類類(Class)是用來描述一個(gè)對(duì)象(Object):類描述了每個(gè)對(duì)象應(yīng)包括的數(shù)據(jù)類描述了每個(gè)對(duì)象的行

3、為特征6封裝通過將數(shù)據(jù)和對(duì)數(shù)據(jù)的處理方法封裝在對(duì)象中,對(duì)用戶隱藏對(duì)象的具體實(shí)現(xiàn)細(xì)節(jié),降低問題的復(fù)雜度封裝是將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一個(gè)抽象數(shù)據(jù)類型內(nèi)部,其他對(duì)象只能通過接口才能與數(shù)據(jù)進(jìn)行交互用戶可以直接使用類實(shí)現(xiàn)需要的供能,提高了類或模塊的可重用性封裝在類中的私有數(shù)據(jù)和私有方法對(duì)外是不可用的,使內(nèi)部信息不易被破壞,從而保護(hù)數(shù)據(jù)的完整性和安全性7類的定義類包括兩方面的內(nèi)容:屬性:用來描述對(duì)象的數(shù)據(jù)元素稱為對(duì)象的屬性(也稱為數(shù)據(jù)/狀態(tài))方法:對(duì)對(duì)象的屬性進(jìn)行的操作稱為對(duì)象的方法(也稱為行為/操作)8類的定義以一個(gè)“學(xué)生”實(shí)體為例,來說明類的定義學(xué)生的基本特征:學(xué)號(hào)年級(jí)姓名性別9Java類的聲明語(yǔ)

4、法格式: class extends SuperClassimplements Interface /類的成員變量定義 /類的方法定義舉例:public class Student private int age ; public void setAge(int _age) age = _age; 10modifier類的訪問修飾符abstract類不能直接產(chǎn)生屬于這個(gè)類的對(duì)象final類不能被其他任何類所繼承(安全的考慮)public類不但可以被同一程序包中的其它類使用,別的程序包中的類也可以使用.friendly(缺省)類只能被本包中的其它類使用extends 類的繼承Implements

5、類中將實(shí)現(xiàn)的接口名字11屬性的聲明語(yǔ)法格式: type =defaultValue ; 舉例:public class Student private int age; public String name = “Alex Wen”;12域的定義在類的定義中,類體部分由數(shù)據(jù)和方法組成,數(shù)據(jù)部分體現(xiàn)為成員變量的定義,也成為域或者靜態(tài)屬性,域體現(xiàn)了類的狀態(tài),而狀態(tài)的改變由類體的方法實(shí)現(xiàn),域必須在類體中直接定義,不能包含在方法定義中【Specifier】type variableName【Specifier】可以是public protected private(訪問權(quán)限)finial(常量) st

6、atic(靜態(tài))transient (臨時(shí)變量)volatile(用在多線程程序中,需要備份)13方法的定義方法是類的動(dòng)態(tài)屬性,表示類具有的功能和行為,用來改變對(duì)象的狀態(tài),其他對(duì)象通過調(diào)用對(duì)象的方法獲得對(duì)該對(duì)象的服務(wù)java語(yǔ)言是面向?qū)ο缶幊陶Z(yǔ)言,以數(shù)據(jù)為中心,方法依附于數(shù)據(jù)的存在,方法只能在類的內(nèi)部進(jìn)行定義。14方法的聲明語(yǔ)法格式: () 舉例:public class Student private int age; public int getAge() return age; public void setAge(int _age) age = _age; 15Specifier可以是

7、關(guān)鍵字public protected private(訪問權(quán)限) abstract (抽象方法,只有方法頭,沒有方法體)static(靜態(tài)方法)returnType指的是返回值類型parameterList參數(shù)表列表,用()括起來方體的多個(gè)參數(shù)之間使用逗號(hào)隔開 方法中的變量可以是類的成員變量,通過方法調(diào)用傳入?yún)?shù)值,也可以是方法內(nèi)定義的局部變量16main()方法Java程序有兩種類型,一種是java 應(yīng)用程序(java application),另一種是java applet,main()是java application中的特定方法,表示java程序的執(zhí)行入口在運(yùn)行程序時(shí),輸入的類名必須

8、與main()方法所在的類的名字相同main()函數(shù)的修飾符必須是public static void , public static順序可以顛倒同c語(yǔ)言相比,java中的main()函數(shù)必須包含在類定義中在c中,將main()方法所在的程序文件名作為執(zhí)行的第一個(gè)命令行參數(shù),而java不是17構(gòu)造方法在創(chuàng)建類對(duì)象時(shí),初始化類的實(shí)例對(duì)象構(gòu)造方法必須與類名相同構(gòu)造方法沒有返回值,因此方法頭不能用返回類型修飾用戶不能直接調(diào)用構(gòu)造方法構(gòu)造方法在用戶創(chuàng)建對(duì)象時(shí),由系統(tǒng)自動(dòng)調(diào)用執(zhí)行構(gòu)造方法的作用是對(duì)類對(duì)象進(jìn)行初始化構(gòu)造方法的修飾符不能是abstract static final,只能是public pro

9、tected private其中之一18類中也可以不用定義構(gòu)造方法,如果沒有構(gòu)造方法,系統(tǒng)將為該類默認(rèn)定義一個(gè)空構(gòu)造方法一個(gè)類中可以有多個(gè)同名的構(gòu)造方法,但是要具有不同的參數(shù)19構(gòu)造器(Constructor)的聲明構(gòu)造器的聲明語(yǔ)法: ( )構(gòu)建器名稱必須和類名稱一致一個(gè)類可以有多個(gè)構(gòu)建器,但這些構(gòu)造器的參數(shù)列表必須不同例如:public class Dog private int weight;public Dog(int w) weight = w;203 對(duì)象的定義和使用類是 一種引用數(shù)據(jù)類型,用戶首先要定義他,定義的目的是使用,要使用類,方式就是定義對(duì)象,通過訪問對(duì)象的靜態(tài)屬性或者動(dòng)態(tài)

10、屬性,來實(shí)現(xiàn)程序的功能Java 語(yǔ)言中對(duì)象的使用步驟是,首先創(chuàng)建對(duì)向,然后訪問對(duì)象的數(shù)據(jù)和調(diào)用對(duì)象的方法,多個(gè)對(duì)象之間通過消息傳遞的方式,共同完成系統(tǒng)要求的功能,對(duì)象使用完畢后,關(guān)閉對(duì)象,釋放對(duì)象所占用的各種資源21對(duì)象的創(chuàng)建聲明對(duì)象聲明的類可以是java類庫(kù)中的系統(tǒng)類,如String DataInputStream等,也可以是用戶自定義的類實(shí)例化對(duì)象實(shí)例化關(guān)鍵字objectanme=new ClassName(ParameterValue);myPerson=new person();myPerson=new person(”lily”,0,3500,6);22對(duì)象的創(chuàng)建和使用在Java中,

11、使用new 關(guān)鍵字來創(chuàng)建一個(gè)對(duì)象(實(shí)例化一個(gè)類),new后面跟上一個(gè)構(gòu)造器每個(gè)類都至少有一個(gè)構(gòu)造器,如果沒有定義構(gòu)造器,則系統(tǒng)將自動(dòng)提供一個(gè)默認(rèn)的不帶任何參數(shù)的構(gòu)造器,如果類沒有定義構(gòu)造器,可以用這個(gè)默認(rèn)的構(gòu)造起來生成一個(gè)對(duì)象使用“.”操作符來訪問對(duì)象的成員,包括對(duì)象方法和對(duì)象屬性.23小結(jié)面向?qū)ο蟮姆治龊驮O(shè)計(jì)簡(jiǎn)介類和對(duì)象構(gòu)造器對(duì)象的創(chuàng)建和使用24信息的隱藏隱藏:指的是對(duì)象的一種保護(hù)機(jī)制,使得它的屬性或方法不被外部的程序直接訪問使用者對(duì)類內(nèi)部定義的數(shù)據(jù)(對(duì)象的成員變量)的直接操作會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤、混亂或安全性問題。public class Student public int age;publ

12、ic class StudentTest public static void main(String args)Student s = new Student();/合“法”但不合理的設(shè)置s.age = 1000; 25信息的封裝封裝指的是將對(duì)象的狀態(tài)信息(屬性)和行為(方法)捆綁為一個(gè)邏輯單元的機(jī)制。Java中通過將數(shù)據(jù)封裝、聲明為私有的(private),再提供一個(gè)或多個(gè)公開的(public)方法實(shí)現(xiàn)對(duì)該屬性的操作,以實(shí)現(xiàn)下述目的:隱藏一個(gè)類的實(shí)現(xiàn)細(xì)節(jié);防止對(duì)封裝數(shù)據(jù)的未經(jīng)授權(quán)的訪問。使用者只能通過事先定制好的方法來訪問數(shù)據(jù),可以方便地加入控制邏輯,限制對(duì)屬性的不合理操作;有利于保證數(shù)據(jù)

13、的完整性;便于修改,增強(qiáng)代碼的可維護(hù)性;26Java源文件的基本結(jié)構(gòu)源文件的基本語(yǔ)法:+例如:package school;import java.util.List;import java.io.*;public class Student private List Teacher;public void printSheet(Writer output) 27package語(yǔ)句package語(yǔ)句的語(yǔ)法為:package . * ;舉例:package .tsinghua.college;public class Student 28package語(yǔ)句打成包后的類的編譯和執(zhí)行:如

14、果在程序Student.java中已定義了包.tsinghua.college,編譯時(shí)采用如下方式:javac Student.java 則編譯器會(huì)在當(dāng)前目錄下生成Student.class文件,如果程序不在cnedutsinghuacollege目錄下,則必須再在適合位置(destpath目錄)手動(dòng)創(chuàng)建這些子目錄,將Test.class復(fù)制到該目錄下,這樣,這個(gè)類才可以被使用。javac -d destpath Student.java則編譯器會(huì)自動(dòng)在destpath目錄下建立子目錄cnedutsinghuacollege,并將生成的.class文件都放到destpath cne

15、dutsinghuacollege下。29import語(yǔ)句在需要使用不同的包中的類時(shí),使用import語(yǔ)句來引入所需要的類import 語(yǔ)句的語(yǔ)法為:import .;import .*;30import語(yǔ)句編譯器如何尋找import語(yǔ)句中指定的包或者類?在CLASSPATH指定的路徑下尋找默認(rèn)情況下,系統(tǒng)會(huì)自動(dòng)引入java.lang包中的所有類31常用的包java.lang-包含一些Java語(yǔ)言的核心類,如String、Math、Integer、System和Thread,提供常用功能。java.awt-包含了構(gòu)成抽象窗口工具集(abstract window toolkits)的多個(gè)類,這些類被用來構(gòu)建和管理應(yīng)用程序的圖形用戶界面(GUI)。java.applet-包含applet運(yùn)行所需的一些

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論