實驗抽象類和接口_第1頁
實驗抽象類和接口_第2頁
實驗抽象類和接口_第3頁
實驗抽象類和接口_第4頁
實驗抽象類和接口_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗10 抽象類和接口一、實驗名稱和性質所屬課程Java語言程序設計實驗名稱抽象類和接口實驗學時2實驗性質驗證 綜合設計必做/選做必做 選做二、實驗目的1. 設計并使用抽象類;2.學習如何定義接口,掌握接口的實現(xiàn)方式,使用實現(xiàn)了接口的類;3.理解接口與抽象類的區(qū)別。 三、實驗內容1.設計和實現(xiàn)一個Soundable接口,該接口具有發(fā)聲功能,同時還能調節(jié)聲音大小。Soundable接口的這些功能將會由3種聲音設備來具體實現(xiàn),他們分別是收音機Radio、隨身聽Walkman和手機Mobilephone。同時需要設計一個應用程序類來使用這些實現(xiàn)了Soundable接口的聲音設備類。在程序運行時,先詢

2、問用戶想聽那種設備發(fā)出聲音,然后程序就會按照該設備的工作方式來發(fā)出聲音(驗證性實驗)。2.程序會要求用戶以規(guī)范的格式輸入自己的生日日期,然后將使用Date類和Calendar類中的方法計算出用戶的生日是星期幾,用戶的年齡以及出生的年份是否是閏年。四、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC計算機;內存512MB以上使用的軟件名稱、版本號以及模塊:操作系統(tǒng):Windows XP或Windows 7軟件: JDK 7.0;Eclipse五、知識準備前期要求掌握的知識:了解Java中的抽象類和接口。實驗相關理論或原理:1、Java接口和Java抽象類最大的一個區(qū)別,就在于Java抽象類可以提供某些方法

3、的部分實現(xiàn),而Java接口不可以,這大概就是Java抽象類唯一的優(yōu)點吧,但這個優(yōu)點非常有用。如果向一個抽象類里加入一個新的具體方法時,那么它所有的子類都將得到了這個新方法,而Java接口做不到這一點,如果向一個Java接口里加入一個新方法,所有實現(xiàn)這個接口的類就無法成功通過編譯了,因為你必須讓每一個類都再實現(xiàn)這個方法才行,這顯然是Java接口的缺點。2、一個抽象類的實現(xiàn)只能由這個抽象類的子類給出,也就是說,這個實現(xiàn)處在抽象類所定義出的繼承的等級結構中,而由于Java語言的單繼承性,所以抽象類作為類型定義工具的效能大打折扣。六、驗證性實驗實驗要求通過編寫程序Birthday.java,編輯、運行

4、后輸出結果如圖10.1所示:10.1程序運行結果 實驗程序代碼/Birthday.javaimport java.util.*; / Date,Calendar,Scannerimport java.text.*; / SimpleDateFormatpublic class Birthday public static void main(String args) throws ParseException String birthday, dayOfWeek= ;Date date;Calendar calendar;Scanner scanner = new Scanner(System

5、.in);System.out.println(請輸入你的生日日期:yyyy-MM-dd);birthday = scanner.next( );/創(chuàng)建一個日期格式對象 SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd);/獲得一個包含當前日期和時間的Calendar子類的實例 calendar = Calendar.getInstance();int currentYear = calendar.get(Calendar.YEAR);/按輸入的birthday產生一個Date對象date = dateFormat.pa

6、rse(birthday);/將date對象的值傳遞給calendar對象calendar.setTime(date); int days = calendar.get(Calendar.DAY_OF_WEEK); switch( days ) case 1: dayOfWeek = 星期日;break; case 2: dayOfWeek = 星期一;break; case 3: dayOfWeek = 星期二;break; case 4: dayOfWeek = 星期三;break; case 5: dayOfWeek = 星期四;break; case 6: dayOfWeek = 星期

7、五;break; case 7: dayOfWeek = 星期六;break; System.out.println(你的生日是: + dayOfWeek);int birthYear = calendar.get(Calendar.YEAR);if (birthYear%4=0)&(birthYear%100!=0)|(birthYear%400=0) System.out.println(birthYear + 年: 是閏年); else System.out.println(birthYear + 年: 不是閏年); int age = currentYear-birthYear; Sy

8、stem.out.println(你現(xiàn)在是: + age + 歲); 六、 設計性實驗1實驗要求新建、編譯、運行InterfaceTest.java文件,實驗結果如圖10.2所示:10.2運行結果圖實驗程序代碼/InterfaceTest.javaimport java.util.Scanner;代碼1 /完善此處代碼,定義Soundable接口,包含increaseVolume( ) 、decreaseVolume( ) 、stopSound( ) 、 playSound( )四個方法。class Radio implements Soundable public void increase

9、Volume( ) System.out.println(增大收音機音量); public void decreaseVolume( ) System.out.println(減小收音機音量); public void stopSound( ) System.out.println(關閉收音機); public void playSound( ) System.out.println(收音機播放廣播); class Walkman implements Soundable 代碼2 /完善此處代碼class Mobilephone implements Soundable public void

10、 increaseVolume( ) System.out.println(增大手機音量); public void decreaseVolume( ) System.out.println(減小手機音量); public void stopSound( ) System.out.println(關閉手機); public void playSound( ) System.out.println(手機發(fā)出來電鈴聲); class People private String name; private int age; public void listen(Soundable s) s.play

11、Sound( ); public class InterfaceTest public static void main(String args) int i; People sportsman = new People( ); Scanner scanner = new Scanner(System.in); Soundable soundDevice = new Soundable3; /往聲音設備數(shù)組中放入能發(fā)聲的設備 soundDevice0 = new Radio( ); soundDevice1 = new Walkman( ); soundDevice2 =代碼3;/創(chuàng)建手機對象

12、并賦值給soundDevice2 System.out.println(你想聽什么? 請輸入選擇:0-收音機 1-隨聲聽 2-手機); i = scanner.nextInt( ); /開始聽聲音 sportsman.listen(soundDevicei); soundDevicei.increaseVolume( ); soundDevicei.stopSound(); /調用stopSound( )方法 2、實驗要求(1) 仔細閱讀程序清單,完成代碼1代碼2 。 (2) 為程序增加一個摩托車類Motorcycle,該類也實現(xiàn)了Transport接口。 程序參考代碼 該程序共有5個文件:T

13、ransport.java,Car.java,Ship.java,Plane.java,Interfacetest.java/Transport.javapublic interface Transport public void travel(); public void stop(); /Car.javapublic class Car implements Transport public void travel() System.out.println(小汽車在公路上行駛); public void stop() System.out.println(小汽車停止行駛); /Ship.j

14、avapublic class Ship implements Transport public void travel() System.out.println(輪船在海上航行); public void stop() System.out.println(輪船停止航行); /Plane.javapublic class Plane implements Transport public void travel() System.out.println(飛機在空中飛行); public void stop() System.out.println(飛機停止飛行); / InterfaceTest.javaimport java.util.Scanner;class People public void drive(Transport s) (); public class InterfaceTest public static void main(String args) int i; People driver = new People(); Scanner scanner = new Scanner(System.in); Transport transport = new Tra

溫馨提示

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

評論

0/150

提交評論