Java-項目4學(xué)生基本信息管理.ppt_第1頁
Java-項目4學(xué)生基本信息管理.ppt_第2頁
Java-項目4學(xué)生基本信息管理.ppt_第3頁
Java-項目4學(xué)生基本信息管理.ppt_第4頁
Java-項目4學(xué)生基本信息管理.ppt_第5頁
已閱讀5頁,還剩84頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目4 學(xué)生基本信息管理,-類和對象,Company Logo,,主要內(nèi)容,學(xué)習(xí)目標 重點、難點,Company Logo,回顧,Java 具有8種基本數(shù)據(jù)類型 boolean、char、byte、int、short、long、float 及 double Java 中的運算符可分為四類: 算術(shù)運算符、位運算符、關(guān)系運算符、邏輯運算符 數(shù)據(jù)的輸入輸出 Java 支持下列控制結(jié)構(gòu) 順序、選擇、循環(huán)、跳轉(zhuǎn) 數(shù)組 可用來將同一類型的數(shù)據(jù)存儲在連續(xù)的內(nèi)存位置。 聲明、初始化,引用,常見應(yīng)用(數(shù)組長度、最值等) main方法參數(shù)的使用 字符串的使用 String StringBuffer/StringBuilder,本章背景,本章將學(xué)習(xí) 面向?qū)ο蟮幕靖拍詈吞卣?,面向?qū)ο笤O(shè)計方法的基本思想。 如何自定義類,創(chuàng)建和使用對 然后實現(xiàn)方法重載 學(xué)習(xí)目標 掌握面向?qū)ο蟪绦蚣夹g(shù)的基本概念 掌握類與現(xiàn)實世界的關(guān)系,并能根據(jù)需求正確對其進行抽象 通過自定義類的設(shè)計,掌握類成員變量,成員方法定義和使用,掌握構(gòu)造函數(shù)的定義和使用,掌握方法重載,任務(wù)學(xué)習(xí),Company Logo,任務(wù)描述 任務(wù)一:理解類和對象的概念及其關(guān)系,會分析和設(shè)計銀行帳戶對象和儲戶對象,任務(wù)學(xué)習(xí),Company Logo,支撐知識介紹 面向?qū)ο蟮幕靖拍?類和對象的概念和關(guān)系 封裝性、多態(tài)性、繼承性 面向?qū)ο蟮姆治龊驮O(shè)計方法,程序語言的發(fā)展人類更容易理解,面向機器(機器語言、匯編語言) 可讀性、可維護性、移植性差;效率高 面向過程 核心:算法+數(shù)據(jù)結(jié)構(gòu) 缺陷:隨應(yīng)用程序的規(guī)模擴大,操作與數(shù)據(jù)分離所帶來的維護工作量越來越大 不適用于GUI界面、事件驅(qū)動編程 面向?qū)ο?人類先進的模式應(yīng)用到計算機模型。能更直接的描述客觀存在的事物。 從現(xiàn)實世界中客觀存在的事物出發(fā)來設(shè)計,并在軟件開發(fā)中運用人類的自然思維方式。,面向?qū)ο?對象 世界上所有的事物都可以稱為對象。 包括有形(一臺電視機等)和無形(帳戶、一項記錄等) 對象兩大要素 屬性(對象靜態(tài)特征,可以用某些數(shù)據(jù)描述) 操作(對象動態(tài)特征、又稱方法,具有的行為或功能) 如電視 屬性有:品牌、尺寸、重量等 操作有:收視、選臺、音量調(diào)節(jié)等 按照子類與父類的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng) 對象彼此之間僅能通過傳遞消息互相聯(lián)系。,Company Logo,Company Logo,課堂思考,Company Logo,思考:一只大雁要從北方飛往南方,第一步:抽象出對象-大雁 第二步:識別該對象的屬性-一雙翅膀,黑色的羽毛 第三步:識別該對象的行為-飛行、覓食等 第四步:封裝屬性和行為來描述大雁這類動物。,總結(jié):類是封裝對象屬性和行為的載體 對象是類的一個實例,面向?qū)ο?類 對具有相同基本特征對象的一種抽象,是同一類事物的統(tǒng)稱 類也是Java中最重要的數(shù)據(jù)類型,自定義類型 由類定義生成的數(shù)據(jù)稱為這個類的實例或?qū)ο蟆?類和對象關(guān)系 類是一個抽象的概念 對象是一個具體的類的實例,Company Logo,一個類可以生成多個不同的對象,具有不同的屬性值,例子,Company Logo,面向?qū)ο?Company Logo,例如:定義一個類圓 class Circle /屬性 String color; /顏色 int length; /半徑 /方法 void expand() 方法體 /方法:放大 void reduce() 方法體 /方法:縮小 ,對象具有屬性和行為。與之相對應(yīng),類在定義時,需要聲明類的變量(數(shù)據(jù))和方法。,Circle c1=new Circle() /生成類Circle的實例c1,類,屬性-成員變量 屬性稱為數(shù)據(jù)成員,或者成員變量 描述類中所定義的數(shù)據(jù),對客觀世界實體所具有性質(zhì)的抽象 類的每個實例都有自己特有的屬性值,Company Logo,例如Circle類中所定義的代表半徑、顏色等的數(shù)據(jù)成員,就是Circle類的屬性,類,方法 在類中實現(xiàn)的操作,它是功能實現(xiàn)的基本單位。 方法描述了對象執(zhí)行操作的具體實現(xiàn)算法,Company Logo,一個方法有以下幾個部分構(gòu)成: 方法名 輸入?yún)?shù)(可空) 返回值(可空) 執(zhí)行代碼段,為了使Circle類的對象可以在屏幕上顯示自己,可以定義方法show() int show (int i,float j)/ 返回值 方法名 輸入?yún)?shù) /實現(xiàn)代碼 ,類,消息 軟件對象通過相互間傳遞消息來相互作用和通信,一個消息由三部分組成: 接受消息的對象 接收對象要采取的方法 方法需要的參數(shù),Company Logo,任務(wù)學(xué)習(xí),Company Logo,完成任務(wù)步驟分析 了解對問題的描述 建立使用實例,分析整個應(yīng)用實現(xiàn)的場景,ATM必須允許用戶插入銀行卡,選擇合適的帳戶,然后存錢、取錢、查詢余額; 一個銀行帳戶必須記錄帳戶的ID和當前余額; 支票帳戶和現(xiàn)金帳戶必須支持存錢和取錢。,“取錢“是ATM的一個應(yīng)用實例(存錢、查詢余額、驗卡、取錢-數(shù)目超過余額等也是),步驟有: 選擇銀行列出的帳戶類型 輸入取錢的數(shù)額(不超過余額) 取出錢 取出卡,任務(wù)學(xué)習(xí),Company Logo,完成任務(wù)步驟分析 提取候選類和方法,(1)要發(fā)現(xiàn)對象以及對象的屬性: 在以上使用實例中尋找名詞,如帳戶 (2)要發(fā)現(xiàn)方法: 在使用實例中尋找動詞,如查詢 (3)確定哪些是對象,哪些是對象的屬性: 一般,屬性是一些簡單值,如余額。 而對象是由一些簡單值組合而成,如帳戶包括戶名,余額,開戶時間等。 (4)把找到的方法分配對合適的對象,使其成為對象的成員方法。,一些屬性和對象: 銀行、帳戶、余額、銀行卡等 找到的方法包括: 取錢、選擇帳戶、查詢余額、取卡等,任務(wù)學(xué)習(xí),Company Logo,任務(wù)解決 確定銀行帳戶對象和儲戶對象:,綠色:屬性 紫色:方法,這兩個對象之間存在的關(guān)系為:一個儲戶可以有多個銀行帳戶,一個帳戶只能屬于一個儲戶。,面向?qū)ο筇匦?三個主要特性 繼承性 封裝性 多態(tài)性,Company Logo,繼承性: 指一個新的類繼承原有類的基本特征,并可增加新的特性 繼承具有傳遞性,Java是單繼承,封裝是一種信息隱蔽技術(shù),封裝的目的 隱藏類的實現(xiàn)細節(jié) 迫使用戶通過接口去訪問數(shù)據(jù) 增強代碼的可維護性 封裝的實現(xiàn) Java通過訪問控制權(quán)限來實現(xiàn)封裝,訪問權(quán)限有4種:public, protected, 缺省, private,多態(tài)性是指一個名稱對應(yīng)有多種不同的功能,提供靈活性 類的多態(tài)性主要通過方法的重載,覆蓋和接口來實現(xiàn),面向?qū)ο?課堂思考 小王本來體重70kg,經(jīng)過減肥,體重降到45kg,試從這個問題領(lǐng)域中識別對象、類、屬性、狀態(tài)和狀態(tài)的變化。 1) 類:人。 2) 對象:小王。 3) 屬性:體重。 4) 狀態(tài):70kg。 5) 狀態(tài)的變化:小王的減肥行為導(dǎo)致體重下降,Company Logo,任務(wù)學(xué)習(xí),Company Logo,總結(jié) 介紹面向?qū)ο蠡A(chǔ)知識 類和對象 面向?qū)ο蠓治龊驮O(shè)計的方法 三個主要特性: 繼承性 封裝性 多態(tài)性,任務(wù)學(xué)習(xí),Company Logo,任務(wù)描述 任務(wù)二: 定義平面上任意兩個點p1,p2,并計算p1到原點的距離,以及點p1到p2的距離,任務(wù)學(xué)習(xí),Company Logo,支撐知識介紹 類的定義 屬性的定義 方法的定義 方法定義 方法調(diào)用 方法重載 構(gòu)造方法 主方法 訪問控制修飾符 其他修飾符,類的定義,類 類是封裝對象的屬性和行為的載體 Java中最重要最基本的數(shù)據(jù)類型,由兩種基本成員構(gòu)成: 數(shù)據(jù)(屬性) 可以是基本數(shù)據(jù)類型 也可以是某個類的實例 方法 表示對象具有的行為,與函數(shù)類似,只能在類內(nèi)定義,Company Logo,ccit,27,1 Java 類的定義-語法規(guī)范,類的修飾符 訪問控制權(quán)限修飾符(public、缺省 、private和protected不能) 抽象和最終類修飾符(final,abstract,static不能用 ) 類修飾符為可選項 extends 繼承父類 implements 實現(xiàn)接口,類是組成Java程序的基本要素。它封裝了一類對象的屬性和方法,是這一類對象的原型。,類體,1 Java 類的定義,類名 必須符合Java標識符的命名規(guī)則 以字母、字符”_”或”$”開頭 不能使用與Java關(guān)鍵字相同的類名 類名通常以大寫字母開頭,如果類名由多個單詞組成,則每一個單詞的開頭字母要大寫 類名應(yīng)盡量有意義,便于程序閱讀者的理解和程序的維護,養(yǎng)成良好的編程習(xí)慣。,2、類的修飾符,訪問控制修飾符 public 公開類:類成員可以被本包和不同包的任何類、對象所用;反之非公開類通常為同一個包中其它非公開類或公開類服務(wù)。 缺省 只能被同一個 包中的其他類、對象引用或繼承。 protected 不能用 private 不能用 抽象類修飾符 abstract 后面學(xué) 最終類修飾符 final 后面學(xué),注意:abstract和final是矛盾的,不能同時選擇,要么都不用,要么只能選一個。,3、成員變量定義-語法規(guī)范,變量修飾字 變量數(shù)據(jù)類型 變量名1,變量名2=變量初值;,public | protected |缺省| private static final transient volatile,成員變量的類型 可以是基本類型 也可以是引用類型(類,接口,數(shù)組) 在一個類中的成員變量唯一 變量必須先定義,后使用 可以設(shè)置初值,如果沒有設(shè)置,則會有默認值 整型 (byte、int、short、long)0 字符型 (char)u0000 布爾型 (boolean)false 實型 (float double)0.0 引用類型 (數(shù)組、類、接口)null,3、成員變量定義,例如: public class Date1 /類聲明 int year,month,day; /成員變量聲明 或者: byte b; double d1=0.23,d2=56.7; boolean mycom=true; char mc=b; String s“abc”;,成員變量定義-修飾符,訪問控制修飾符有4種 public、protected、缺省、 private,用來規(guī)定變量的訪問權(quán)限 static 指明該變量是一個類變量(靜態(tài)變量);若無,則為實例變量(屬于對象) final 指該變量是一個常量,不可改變,ccit,33,4、訪問修飾符的控制范圍,:可訪問,class A public int x;/任何類的對象都能對它讀寫完全暴露給使用者,除非特殊,一般不定義 protected int y;/同一個包中任何類或不同包中子類方法能進行讀寫 private int z;/只有本類自身成員才能訪問 int w;/同一個包中任何類對象可以進行讀寫 void setX(int a) z=a;/可以,在A類內(nèi)部 public class TestA public static void main(String args) A pt=new A();/通過new運算符生成一個A類對象 pt.x=10; /因為是public,可對A類的對象中x成員進行讀寫 pt.y=20;/如果在同一個包,是可以的。否則不可以 pt.z=30;/不行,只有在A類內(nèi)部才可以訪問,外部無權(quán) ,假設(shè)兩個類定義在同一個包中,Class Point static int x;/靜態(tài)(類)變量 int y; /實例變量 Public class TeatPoint public static void main(String args) Point.x=10;/可以。X一直存在,隨時可用,與有無對象無關(guān) Point.y=10;/不可以,是實例變量,必須先創(chuàng)建對象后才能使用 Point p1=new Point(),p2=new Point(),p3=new Point(); p1.y=10; /可以。P1對象內(nèi)部含有自己的變量 p2.y=20; /可以。P1對象內(nèi)部含有自己的變量 p3.y=30; /可以。P1對象內(nèi)部含有自己的變量 p1.x=20;/可以,所有對象共享一個類成員變量x,它一直存在,隨時可用 ,示例:控制范圍-1,同一個類內(nèi)可以訪問任何訪問權(quán)限的變量。,package test; public class Demo2 void test() Demo1 dm1=new Demo1(); dm1.priInt=1; /錯誤 Int=1; dm1.defInt=1; dm1.pubInt=1; ,在同一個包下,但Demo2對Demo1中的private成員沒有訪問權(quán)限。,package test; public class Demo1 private int priInt; protected int proInt; int defInt; public int pubInt; void test() priInt=1; proInt=1; defInt=1; pubInt=1; ,package test.t1; import test.Demo1; public class Demo4 void test() Demo1 dm1=new Demo1(); dm1.priInt=1; /錯誤 Int=1; /錯誤 dm1.defInt=1; /錯誤 dm1.pubInt=1; ,不同包下,只能訪問Demo1中的public成員。,5、方法定義-語法規(guī)范,方法修飾字 返回類型 方法名稱(參數(shù)1,參數(shù)2,) throws exceptionList (statements;) /方法體:方法的內(nèi)容 ,public | protected|缺省 | private static final | abstract native synchronized,返回類型 可以是任意的Java數(shù)據(jù)類型 當一個方法不需要返回值時,返回類型為void。 參數(shù)的類型 可以是簡單數(shù)據(jù)類型 也可以是引用數(shù)據(jù)類型(數(shù)組、類或接口) 參數(shù)傳遞方式是值傳遞。 方法體 對方法的實現(xiàn) 包括局部變量的聲明以及所有合法的Java指令。 局部變量的作用域只在該方法內(nèi)部。,舉例:方法定義,舉例: final void move(int dx,int dy) throws IOException x+=dx; y+=dy; 舉例: class Test int a,b; void change(Test obj) obj.a=50; obj.b=40; /可以在函數(shù)中改變對象狀態(tài) void setTest(int x,int y) a=x; b=y; ,6、方法定義-修飾符,方法命名 符合標識符規(guī)則 Java中允許同名方法存在,但方法的參數(shù)列表應(yīng)不同(方法的重載) 訪問控制權(quán)限 public 、pretected、缺省、private含義同成員變量 其他修飾符 static 類方法(靜態(tài)方法),可直接用類名來調(diào)用,隨時可用。 abstract 抽象方法,只有聲明部分,方法體由子類來實現(xiàn) final 最終方法,不能被子類重構(gòu) native 本地方法,由本地其他語言代碼實現(xiàn) synchronized 同步,將在“多線程”中介紹,static 用于修飾類的數(shù)據(jù)成員和方法,表示該成員為靜態(tài)成員 基本形式: static 數(shù)據(jù)類型 變量名; static 返回類型 方法名(參數(shù)列表) /方法體 ,修飾符static,class A static int b=0; /靜態(tài)成員變量 static void get() /靜態(tài)方法 ,static修飾的 類成員或靜態(tài)成員 在定義時就靜態(tài)分配了內(nèi)存空間,在生成類對象之前就可以使用靜態(tài)成員 靜態(tài)成員是屬于整個類的,一個類的多個對象可以共享該靜態(tài)成員 無static修飾的 實例成員 屬于某個對象或?qū)嵗?,必須要定義對象才能使用,修飾符static,對靜態(tài)成員的訪問方法 先生成該類的實例(對象),然后再通過點運算符訪問 A a=new A(); a.b=5; a.get() 是不生成實例,直接在類名后加上點運算符和靜態(tài)成員名 A.b=5; A.get(),Company Logo,static方法內(nèi)部隨時可以訪問static成員變量和方法,要訪問非static成員變量或方法,必須先創(chuàng)建一個對象。非static方法隨時訪問,靜態(tài)方法不能被重載和重寫,修飾符static,對靜態(tài)成員的訪問方法 static方法內(nèi)部 可以訪問static成員變量和方法 不能訪問非static成員變量或方法,必須先創(chuàng)建一個對 非static方法 可以訪問static成員變量和方法 可以訪問非static成員變量和方法,Company Logo,class Point static int x; int y; public static void main(String args) x=10;/可以,類變量隨時可以使用 y=20;/不可以。必須先創(chuàng)建一個類對象 Point pt=new Point(); pt.y=20;/可以通過對象pt來訪問pt對象中的變量y ,修飾符-final,final關(guān)鍵字 最終的,不能修改 可以修飾類,成員變量和方法。 最終類,不能再有子類; 最終方法,不能再被重寫; 最終屬性,初始化后,不能再被賦值。常量,Company Logo,final class A final double PI=3.1416; final double area(double r) return (PI*r*r); class FinalTest static public void main(String arg) A a = new A( ); System.out.println(“area= “+a.area(5.0); ,a.PI=100或重寫方法area()都是錯誤的,修飾符 abstract,抽象方法 用abstract修飾的方法, 抽象方法只有方法的返回值、名稱和參數(shù)列表,沒有函數(shù)體。 抽象類 用abstract修飾的類 抽象類是一種沒有完全實現(xiàn)的類。 不能用它產(chǎn)生具體的實例,Company Logo,7、方法,類成員方法 方法定義 方法調(diào)用 方法重載 構(gòu)造方法 主方法,Company Logo,方法定義,返回值類型 可以是基本數(shù)據(jù)類型、數(shù)組或類 如果方法不返回任何值,必須聲明為void(空) 參數(shù)列表 由零個或多個參數(shù)構(gòu)成,參數(shù)之間用逗號分隔,每個參數(shù)由一個數(shù)據(jù)類型和一個標識符構(gòu)成 方法體 定義了該方法具體是如何實現(xiàn)的,是整個方法的核心和重點 局部變量 方法體中定義的變量 參數(shù)列表,Company Logo,方法修飾符 返回值類型 方法名 (參數(shù)列表) 方法體 ,方法調(diào)用,調(diào)用方法 實參在調(diào)用時會代替方法定義中的形參。 要求實參的類型、個數(shù)和順序必須與定義中的形參表一致。 方法調(diào)用的形式有兩種 一種是把方法調(diào)用作為一個表達式語句 另一種是作為一個表達式,Company Logo,方法重載,方法重載 一個類中多個方法具有相同的方法名,但參數(shù)的類型或參數(shù)的數(shù)量不同 靜態(tài)多態(tài):編譯系統(tǒng)調(diào)用方法時,系統(tǒng)自動根據(jù)實際參數(shù)的數(shù)量和類型匹配,Company Logo,public class MethodOverload public static void main(String args ) MethodOverload obj=new MethodOverload(); System.out.println(obj.square(3)+” ”+obj.square(1.5); int square( int x ) return x * x; double square( double y ) return y * y; ,構(gòu)造方法,類的特殊的方法,用來初始化對象 要求 構(gòu)造函數(shù)的方法名與類名一致 構(gòu)造函數(shù)沒有返回類型,不能有void 只能通過new關(guān)鍵字在創(chuàng)建對象的時候調(diào)用 注意 在創(chuàng)建一個類的新對象時,系統(tǒng)會自動調(diào)用該類的構(gòu)造函數(shù)為新對象初始化 每一個類至少都有一個構(gòu)造方法 當某個類的沒有聲明構(gòu)造方法時,系統(tǒng)會為其自動生成一個默認構(gòu)造方法(無參數(shù)、無方法體)。 構(gòu)造方法使用其參數(shù)初始化新對象的狀態(tài)。 構(gòu)造函數(shù)可以重載(參數(shù)序列不同)。,當創(chuàng)建對象時,首先用new分配該對象的內(nèi)存空間,然后調(diào)用某一個構(gòu)造方法,對該對象內(nèi)存空間初始化。,Main方法,主方法 是Java應(yīng)用程序執(zhí)行的起點 與其它方法相似,它必須在類的內(nèi)部定義 注意: 一個Java源文件可以包含一個或多個類 但在Java的Application中 必須有而且只能有一個類包含main方法 且該程序文件的名稱必須與包含main方法的類的類名一致。,Company Logo,main方法必須是公有的(public),靜態(tài)的(static),沒有返回值,有一個字符串數(shù)組參數(shù),用于進行參數(shù)的傳遞。,任務(wù)學(xué)習(xí),Company Logo,完成任務(wù)步驟分析 一是如何通過類定義描述一個具體的點 一個類Point表示抽象的點,定義兩個成員變量x, y表示點對應(yīng)的具體位置 二是如何計算點到原點的距離 Math中已經(jīng)實現(xiàn)了求平方根的方法sqrt() 三是如何計算點與點之間的距離 同上 編寫主類,測試調(diào)用,任務(wù)學(xué)習(xí),Company Logo,任務(wù)解決 編寫程序 遞交,任務(wù)學(xué)習(xí),Company Logo,總結(jié) 類的定義主要包括成員變量和成員方法的定義 一般語句不能單獨放在類中,必須放到方法中 成員變量的作用范圍為整個類 成員方法(方法的返回值,方法的局部變量,可以重載) 主方法 訪問控制修飾符 public 、protected、缺省、private 修飾類 修飾成員變量或成員方法 其他修飾符 static final abstract,任務(wù)學(xué)習(xí),Company Logo,任務(wù)描述 任務(wù)三:定義和處理員工信息,任務(wù)學(xué)習(xí),Company Logo,支撐知識介紹 成員變量和局部變量 作用范圍 變量隱藏 this關(guān)鍵字 對象 對象創(chuàng)建 訪問對象 對象消除 包 package Import 再淡static成員變量和成員方法,成員變量和局部變量,成員變量 在類體中定義 在整個類中都有效 局部變量 在方法中定義 方法體中聲明 方法中的形參 只在本方法中有效,Company Logo,class Data int x=12,y=5; /成員變量 public void sum() int s; /局部變量 s=x+y; ,class Data int x=12,y=5; public void sum() int x=3; /局部變量x屏蔽了成員變量 int s; s=x+y; ,名字隱藏:局部變量名與成員變量名相同,則成員變量被屏蔽,名字隱藏和this關(guān)鍵字,名字隱藏 局部變量與類的成員變量同名,則局部變量會隱藏成員變量,稱為名字隱藏。 若要訪問被隱藏的成員變量,則必須使用this來訪問。 this 用于代表當前正在使用或訪問的對象 每一個對象內(nèi)部都有一個this變量,用于指明自身地址,Public class Point private int x; private int y; public Point()x=0;y=0; public Point(int x)/int x為局部變量與成員變量x同名,成員x隱藏 this.x=x;y=0;/局部變量x的值賦給成員變量x public Point(int x,int y) this.x=x;this.y=y; public int getX()return x; public int getY()return y; public void setX(int x)this.x=x; public void setY(int y)this.y=y; public void setPoint(int x,int y)this.x=x;this.y=y; public void setPoint(Point pt)x=pt.x;y=pt.y; ,this關(guān)鍵字,this 表示對當前對象的引用 表示使用類的成員變量,而非局部變量,尤其是()在成員變量(名字隱藏)與局部變量同名時 用于構(gòu)造方法中引用滿足指定參數(shù)類型的構(gòu)造方法 只能用一個,且必須放在方法體的第一個語句,Company Logo,public class Employee private String name; private int salary; public Employee() this(“Unknown”); public Employee(String n, int s) name = n; salary = s; public Employee(String n) this(n,0); /引用本類的構(gòu)造方法,只能放在第一 ,對象,對象 是類的實例;創(chuàng)建類的目的是以類為模板創(chuàng)建對象。 對象的聲明周期 創(chuàng)建對象 使用對象 刪除對象,一個類可以有多個實例,對象的創(chuàng)建,對象的創(chuàng)建 需要兩個步驟 對象創(chuàng)建之前要先進行聲明,但沒有分配空間,為null,不能使用 Car demoCar; 然后通過new操作符創(chuàng)建一個對象實例,真正引用一個對象: demoCar = new Car(); 也可以兩步合一: Car demoCar new Car(); 對象的構(gòu)造過程 為對象開辟空間,并對對象的成員變量進行缺省的初始化; 對成員變量進行指定的初始化; 調(diào)用構(gòu)造方法。,new 先為該對象從堆中申請內(nèi)存空間,自動調(diào)用構(gòu)造行數(shù)對該對象內(nèi)存進行初始化,最后返回對象的引用,若內(nèi)存不夠,返回null。,對象的使用,對象的使用 訪問對象的成員變量和方法 對象做類的成員 方法中使用對象 對象數(shù)組,對象的使用訪問對象的成員變量和方法,訪問對象的成員變量和方法 通過運算符“.”進行訪問對象的成員變量和方法 例如: MyDate date = new MyData(); int day; day = date.day; /引用date的成員變量day date.tomorrow(); /調(diào)用date的方法tomorrow(),引用對象類型,復(fù)合(引用)類型 類 數(shù)組 接口 引用類型 指向一個對象在內(nèi)存中的位置,本質(zhì)上它是一種帶有很強的完整性和安全性限制的指針 引用型變量只支持有限的邏輯判斷: 相等判斷(是否同一個對象的引用):= 和!= 類型判斷(是否為一個類的實例):instanceof,示例:使用對象1,class Point public int x=0, y=0; public Point(int x,int y) this.x=x; this.y=y; public int getX() return x; public int getY() return y; public void setXY(int x,int y) this.x=x; this.y=y; ,class Testp public static void main(String args) Point pa=new Point(23,94); pa.x=44; /如 x聲明為private則無法使用此句,改為 setXY(44,2); System.out.println(“pa=(“+pa.getX()+“ ,“+pa.getY()+“)“); ,示例:使用對象2,/ Date1( )是構(gòu)造方法, main()方法是類Date1中的方法 public class Date1 int year,month,day; Date1(int y,int m,int d) year=y; month=m; day=d; void print() System.out.println(year+“ “+month+“ “+day); public static void main(String args) Date1 a=new Date1(2004,9,20); a.year=2005; a.print(); ,示例:使用對象3,/ main()方法是類UseDate2中的方法, main()使用類另一個 類Date2的對象 class Date2 int year,month,day; void setDate(int y,int m,int d) year=y; month=m; day=d; void print() System.out.println(year+“ “+month+“ “+day); public class UseDate2 public static void main(String args) Date2 b=new Date2(); b.setDate(2004,9,1); b.print(); ,對象的使用對象作為類的成員,類的成員變量可以是對象 注意:在使用前必須為該對象分配空間,class Date int year,month,day; Date(int y,int m,int d) year=y;month=m;day=d; void showDate() System.out.println(year+”,”+month+”,”+day); public class Student String no,name; Date birth; void setStu(String s1,String s2,int y,int m,int d) no=s1; name=s2; birth=new Dare(y,m,d);/為成員變量對象分配空間 ,對象的使用方法中使用對象,對象作為方法的參數(shù)和返回值 注意:是引用傳遞。,/passObject.java 類對象作為方法參數(shù),并且在方法中改變對象 class A int x=5; void change(A a) System.out.println(“a.x=“+a.x); a.x=331; System.out.println(“a.x=“+a.x); class passObject public static void main(String args) A aa=new A(); aa.change(aa); System.out.println(“aa.x= “+aa.x); ,對象的使用對象數(shù)組,數(shù)組中的每個元素是對象。 public class ObjectArray public static void main() Date d=new Date(2); d0=new Date(1999,12,31); d1=new Date(2000,1,1); d0.showDate(); ,對象的清除,定義對象時,必須用new分配空間,但使用后的釋放是系統(tǒng)自動完成的。 Java運行時系統(tǒng)通過垃圾收集(Garbage Collection)周期性地監(jiān)測釋放無用對象所使用的內(nèi)存,完成對象的清除。 除了自動垃圾收集外,通過調(diào)用方法System.gc()要求進行垃圾收集時。 當一個對象的內(nèi)存空間被回收時,系統(tǒng)自動調(diào)用該對象的方法finalize(),進行刪除工作。,包,包 是類和接口的集合,提供一種高層訪問保護和名空間管理 包得作用:避免同名沖突 包名本身又對應(yīng)一個目錄(用一個目錄表示)。 包名可以有層次,以小數(shù)點分割。包名一般全小寫,Company Logo,包( package),package package pk1. pk2.pk3.; 如package first.second.third ,則系統(tǒng)對應(yīng)在磁盤上建立目錄:根路徑firstsecondthird 包名建議 package cn.js.ccit.www; /命名要注意唯一性,可使用WWW域名的倒寫 public class ComplexNumber 如果package未指定,則所有的 class都被組合到一個未命名的缺省default package包中,不能被其他包中的類引用 package說明必須是非注釋非空行的第一行,package語句后對應(yīng)的是包的層次結(jié)構(gòu),包名之間是通過點號來分隔的,包( package),使用包 使用import語句 import pk1.pk2.pk3(類名或*) 注意:import語句要放在程序的最前面。 使用前綴包名 在每個要引入的類前,給出該類所在的包名。,import java.applet.Applet; /引入包java.applet中的類Apple import java.io.*; /引入包java.applet中的類Apple,java.applet.Applet a=new java.applet.Applet(),import java.applet.Applet; Applet a=new Applet();,使用其他包中的類,import語句 將指定包中的類引入當前的程序中,即告訴編譯到哪去找程序中使用的類。 import語句 必須出現(xiàn)在所有類定義之前。,例:import java.util.* ; 該語句引入整個utility 類庫(標準Java庫的一部分) 例:import java.util.Vector ; 該語句只引入Vector類,但utility類庫中的其他類不可用。,主要包介紹,再談static,static 類(靜態(tài))成員變量 類(靜態(tài))方法 例子 不正確的使用,Company Logo,類方法和類變量 static,類方法(靜態(tài)方法)或類變量(靜態(tài)變量) static 用在變量或方法之前,表明它們是屬于類的 實例的方法和變量 若無static修飾,則變量和方法分別是某個實例對象的,class ABCD char data; static int share_data; class Demo ABCD a,b,c,d; ,類方法和類變量 static,static 類變量 生存期不依賴于對象,無需創(chuàng)建實例對象,可以直接通過類名訪問。 也可以通過該類的實例對象訪問 任何一個類的實例訪問或操作這個成員,都是對這同一個內(nèi)存單元的訪問和操作 類方法 可以直接通過類名訪問 只能訪問該類的類變量和類方法,不能直接訪問實例的變量和方法(無static) 若無static修飾,則變量和方法分別是實例的方法和變量 實例(非static)方法可以訪問該類的類變量和類方法 遵循對象的生命周期,隨著對象的創(chuàng)建而創(chuàng)建,隨著對象的消亡而消亡,static示例:使用靜態(tài)變量,public class StaticEx static int gCount=0; public static void main(String args) StaticEx e1=new StaticEx(); StaticEx e2=new StaticEx(); e1.gCount+; e2.gCount+; System.out.println(“gCount of e1=

溫馨提示

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

評論

0/150

提交評論