JAVA語言程序設(shè)計第五章[詳版課資]_第1頁
JAVA語言程序設(shè)計第五章[詳版課資]_第2頁
JAVA語言程序設(shè)計第五章[詳版課資]_第3頁
JAVA語言程序設(shè)計第五章[詳版課資]_第4頁
JAVA語言程序設(shè)計第五章[詳版課資]_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章 Java 高級語言特征,靜態(tài)變量、方法與初始化程序塊 final 關(guān)鍵字 抽象類 Interface package 訪問控制 內(nèi)部類 其它,1,課堂優(yōu)質(zhì),類變量(static /class variable),在該類所有實例之間是共享的。在加載該類時,只分配 一次空間,并初始化。 例:class Employee static int com ; 則運行時,,2,課堂優(yōu)質(zhì),類變量(static /class variable),類變量可用來在實例之間進(jìn)行通信或跟蹤該類實例的數(shù)目。,例:public class Count private int serialNumber ; priv

2、ate static int counter = 0 ; public Count( ) counter+ ; serialNumber = counter ; ,3,課堂優(yōu)質(zhì),類變量可以是public 或private 對于public 類型的類變量,可以在類外直接用類名調(diào)用而不需要初始化。 Public class StaticVar public static int number ; public class Otherclass public void method() int x = StaticVar.number ; ,類變量(static /class variable),4

3、,課堂優(yōu)質(zhì),類(class/static)方法,可以直接被調(diào)用,而不需要生成任何實例 public class GeneralFunction public static int addUp(int x, int y) return x+y ; public calss UseGeneral public void method() int c = GeneralFunction.addUp(9,10); ,5,課堂優(yōu)質(zhì),靜態(tài)初始化程序,沒有存在于任何方法體中的靜態(tài)語句塊。在加載該類時執(zhí)行且只執(zhí)行一次。 public Class StaticInitDemo static int i=5; s

4、tatic System.out.println(“Static code: i=”+i+); public class Test public static void main(String args) System.out.println(“ Main code: i=”+ StaticInitDemo.i); ,Static code: i=5 Main code: i = 6,6,課堂優(yōu)質(zhì),Final 關(guān)鍵字, 被定義成final的類不能有子類。 例: final class Employee class Manager extends Employee 被定義成final 的成員方法

5、不能被重寫。 被定義成final的成員變量不能改變。該變量實際上 是常量,一般大寫,并賦值。 final int NUMBER = 100;,7,課堂優(yōu)質(zhì),抽象類,一個類如果只聲明方法而沒有方法的實現(xiàn),則稱為抽象類。 必須在聲明中增加 abstract 關(guān)鍵字,在無方法體的方法前 也要加上abstract。 Public abstract class Drawing public abstract void drawDot( int x, int y); public void drawLine(int x1, int y1, int x2,int y2) . / 調(diào)用drawDot()方法

6、抽象類也可有普通的成員變量或方法。,8,課堂優(yōu)質(zhì),抽象類,抽象類不能直接用來生成實例。一般可通過定義 子類進(jìn)行實例化。 可以生成抽象類的變量,該變量可以指向具體的一個 子類的實例。,Abstract class Employee abstract void raiseSalary(int i) ; class Manager extends Employee void raiseSalary(int i ) . ,Employee e = new Manager( ) ;,9,課堂優(yōu)質(zhì),接口 interface, Interface 是在抽象類概念的基礎(chǔ)上演變而來的。 一個interface所

7、有成員方法都是抽象的,并且只能 定義 static final 成員變量。,10,課堂優(yōu)質(zhì),Interface 的含義,interface定義了一組行為的協(xié)議。兩個對象之間通過這個協(xié)議進(jìn)行通信。 interface 不屬于類層次結(jié)構(gòu)。不相關(guān)的類可以實現(xiàn)相同的接口。,11,課堂優(yōu)質(zhì),Interface 示例,12,課堂優(yōu)質(zhì),用implements代替extends聲明子類,該子類中必須實現(xiàn)接口(及其超類)中的所有方法。 例:interface SayHello void printMessage( ); class SayHelloImpl implements SayHello void pr

8、intMessage( ) System.out.println(“Hello”); ,實現(xiàn)interface,13,課堂優(yōu)質(zhì),Interface的使用,Interface可以作為一種數(shù)據(jù)類型使用。 如:,public class StockMonitor public void watchStock(StockWatcher watcher, String tickerSymbol, double delta) . ,14,課堂優(yōu)質(zhì),Interface 中注意問題,不能向interface定義中隨意增加方法。 public interface StockWatcher final Strin

9、g sunTicker = SUNW; final String oracleTicker = ORCL; final String ciscoTicker = CSCO; void valueChanged(String tickerSymbol, double newValue); void currentValue(String tickerSymbol, double newValue); ,public interface StockTracker extends StockWatcher void currentValue(String tickerSymbol, double n

10、ewValue); ,15,課堂優(yōu)質(zhì),可以通過實現(xiàn)接口實現(xiàn)多重繼承:一個類可只繼承 一個父類,并實現(xiàn)多個接口。 interface I1 ; interface I2 ; class E . ; class M extends E implements I1,I2 一個interface 可作為類名使用,實現(xiàn)多態(tài)。,接口 interface,Interface Human class Chinese implements Human class Japanese implements Human . Human e = new Chinese( ); Human e = new Japanes

11、e( );,16,課堂優(yōu)質(zhì),類分組 package 語句,包(package)是相關(guān)類與接口的一個集合,它提供訪問控制與命名空間管理。 Java平臺中的類與接口都是根據(jù)功能以包組織的。 包機(jī)制的好處: 程序員容易確定包中的類是相關(guān)的,并且容易根據(jù)所需的功能找到相應(yīng)的類。 每個包都創(chuàng)建一個新的命名空間,因此不同包中的類名不會沖突。 同一個包中的類之間有比較寬松的訪問控制。,17,課堂優(yōu)質(zhì),創(chuàng)建包,用package語句指定源文件中的類屬于一個特定包: package 包名 包定義語句在每個源程序中只能有一條, 即一個類只能屬 于一個包。 包定義語句必須在程序的第一行(之前可有空格及注釋)。 包名用

12、“.” 分隔。,18,課堂優(yōu)質(zhì),import 語句,將package 引入源程序,格式: import 包名.*; import 包名. 類名; import 語句必須在源程序之前,在package 聲明之后。 package . /缺省是package . import . /缺省是import java.lang.* 類聲明 .,19,課堂優(yōu)質(zhì),包名與包中類的存儲位置,包分隔符相當(dāng)于目錄分隔符,包存儲的路徑由包根路徑加上包名指明的路徑組成。 包的根路徑由CLASSPATH環(huán)境變量指出。 %CLASSPATH%abc financeDept,20,課堂優(yōu)質(zhì),源文件(.java)與類文件(.c

13、lass)的管理,源文件可以按照包名指明的路徑放置。如,類文件也應(yīng)該放在反映包名的一系列目錄下。,21,課堂優(yōu)質(zhì),一般將源文件與類文件分別存放,可采用如下方式:,源文件(.java)與類文件(.class)的管理,示例,22,課堂優(yōu)質(zhì),高級訪問控制,成員變量和方法有4種訪問級別: public, protected, default(package), private ; 類有兩種訪問級別:public 或default。 修飾符的作用范圍: Modifier Same class Same Package Subclass Universe public Yes YesYes Yes pro

14、tected Yes Yes Yes default Yes Yes private Yes,23,課堂優(yōu)質(zhì),class Alpha private int iamprivate; private void privateMethod() System.out.println(privateMethod); class Beta void accessMethod() Alpha a = new Alpha(); a.iamprivate = 10; a.privateMethod(); ,高級訪問控制-private,/ illegal,/ illegal,24,課堂優(yōu)質(zhì),class Alp

15、ha private int iamprivate; boolean isEqualTo(Alpha anotherAlpha) if (this.iamprivate = anotherAlpha.iamprivate) return true; else return false; ,高級訪問控制,注意:訪問控制應(yīng)用于class或type 層次,而不是對象層次。,25,課堂優(yōu)質(zhì),允許類本身、它的子類、以及同一個包中其余的類訪問這些成員。 package Greek; public class Alpha protected int iamprotected; protected void

16、protectedMethod() System.out.println(protectedMethod); package Greek; class Gamma void accessMethod() Alpha a = new Alpha(); a.iamprotected = 10; tectedMethod(); ,高級訪問控制protected,/ legal,/ legal,26,課堂優(yōu)質(zhì),package Latin; import Greek.*; class Delta extends Alpha void accessMethod(Alpha a, Delta d)

17、 a.iamprotected = 10; d.iamprotected = 10; tectedMethod(); tectedMethod(); ,高級訪問控制protected,X,X,27,課堂優(yōu)質(zhì),package Greek; class Alpha int iampackage; void packageMethod() System.out.println(packageMethod); package Greek; class Beta void accessMethod() Alpha a = new Alpha(); a.iampackage = 10;

18、 a.packageMethod(); ,高級訪問控制package,28,課堂優(yōu)質(zhì),內(nèi)部類,內(nèi)部類是在一個類的聲明里聲明的類。 Class A class B 內(nèi)部類可作為類的一個成員使用。一般只在包容類中 調(diào)用。 內(nèi)部類可以訪問外包類的所有成員。,29,課堂優(yōu)質(zhì),= = 運算符與equals( )方法, equals() 和 = = 比較兩個引用是否指向相同的對象。 equals()方法在String, Date, File, 所有Wrapper類都重 寫了該方法,改為比較內(nèi)容。,30,課堂優(yōu)質(zhì),Wrapper類, Wrapper將基本類型表示成類。 每個wrapper類對象都封裝了基本類

19、型的一個值。 Primitive Data Type Wrapper Class booleanBoolean byteByte charCharacter shortShort int Integer longLong floatFloat doubleDouble,31,課堂優(yōu)質(zhì),Wrapper類,Wrapper類中包含了很多有用的方法和常量。 如數(shù)字型Wrapper類中的MIN_VALUE 和 MAX_VALUE 常量,定義了該類型的最大值與最小值。byteValue, shortValue方法進(jìn)行數(shù)值轉(zhuǎn)換,valueOf 和 toString 實現(xiàn)字符串與數(shù)值之間的轉(zhuǎn)換。,例:Wrap

20、per類對象的創(chuàng)建: Integer quantity = new Integer(123456); Double amount = new Double(345987.246);,32,課堂優(yōu)質(zhì),Collection API - 集合類,一個集合類對象表示了一組對象,相當(dāng)于一個容器。,33,課堂優(yōu)質(zhì),Set, Set不能包含重復(fù)的元素。 兩種Set實現(xiàn):HashSet和TreeSet Set 接口定義: public interface Set / Basic Operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); / Optional boolean remove(Object element); / Optional Iterator iterator(); ,34,課堂優(yōu)質(zhì),List, List是有序的集合,元素可以重復(fù)。 List接口定義: public interface

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論