版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗三 繼承、多態(tài)與接口一、實驗?zāi)康?1. 掌握Java的繼承機制;2. 掌握對象引用的多態(tài)方法;3. 掌握接口的特點、結(jié)構(gòu)和調(diào)用;4. 掌握接口和繼承的混合使用。二、實驗要求 1. 編寫體現(xiàn)類的繼承性(成員變量、成員方法、成員變量隱藏)的程序。 2. 編寫體現(xiàn)類的多態(tài)性(成員方法重載、構(gòu)造方法重載)的程序。3. 編程使用系統(tǒng)接口的技術(shù)和創(chuàng)建自定義接口的方法。三、實驗內(nèi)容 (一)類的繼承性練習 1理解繼承的含義 新類可從現(xiàn)有的類中產(chǎn)生,并保留現(xiàn)有類的成員變量和方法并可根據(jù)需要對它們加以修改。新類 還可添加新的變量和方法。這種現(xiàn)象就稱為類的繼承。 當建立一個新類時,不必寫出全部成員變量和成員方法
2、。只要簡單地聲明這個類是從一個已定義的類繼承下來的,就可以引用被繼承類的全部成員。被繼承的類稱為父類或超類(superclass),這個新類稱為子類。Java 提供了一個龐大的類庫讓開發(fā)人員繼承和使用。設(shè)計這些類是出于公用的目的,因此,很少有某個類恰恰滿足你的需要。你必須設(shè)計自己的能處理實際問題的類,如果你設(shè)計的這個類僅僅實現(xiàn)了繼承,則和父類毫無兩樣。所以,通常要對子類進行擴展,即添加新的屬性和方法。這使得子類要比父類大,但更具特殊性,代表著一組更具體的對象。繼承的意義就在于此。2創(chuàng)建公共類 SY3_1_P l 編寫程序文件 SY3_1_P.java,源代碼如下: public class S
3、Y3_1_P protected String xm; /具有保護修飾符的成員變量 protected int xh; void setdata(String m,int h) /設(shè)置數(shù)據(jù)的方法 xm =m; xh = h; public void print() /輸出數(shù)據(jù)的方法 System.out.println(xm+, +xh); l 編譯 SY3_1_P.java,產(chǎn)生類文件 SY3_1_P.class。 3創(chuàng)建繼承的類 l 程序功能:通過 SY3_1_P 類產(chǎn)生子類 SY3_2,其不僅具有父類的成員變量 xm(姓名)、xh(學(xué)號),還定義了新成員變量 xy(學(xué)院)、xi(系)。在
4、程序中調(diào)用了父類的 print 方法,同時可以看出子類也具有該方法。l 編寫 SY3_2.java 程序,源代碼如下:class SY3_2 extends SY3_1_P protected String xy; protected String xi; public static void main(String args) SY3_1_P p1 = new SY3_1_P(); p1.setdata(帥零,12321) ; p1.print(); SY3_2 s1 = new SY3_2() ; s1.setdata(郭麗娜,12345); /調(diào)用父類的成員方法 s1.xy=經(jīng)濟管理學(xué)院
5、; /訪問本類的成員變量 s1.xi=信息管理系; /訪問本類的成員變量 s1.print(); System.out.print(s1.xm+, +s1.xy+, +s1.xi); l 編譯并運行程序注意:公共類 SY3_1_P 與 SY3_2 類要在同一文件夾(路徑)內(nèi)。 (二)類的多態(tài)性練習1 理解類的多態(tài)性類的繼承發(fā)生在多個類之間,而類的多態(tài)只發(fā)生在同一個類上。在一個類中,可以定義多個同名的方法,只要確定它們的參數(shù)個數(shù)和類型不同。這種現(xiàn)象稱為類的多態(tài)。多態(tài)使程序簡潔,為程序員帶來很大便利。在OOP 中,當程序要實現(xiàn)多個相近的功能時,就給相應(yīng)的方法起一個共同的名字,用不同的參數(shù)代表不同的
6、功能。這樣,在使用方法時不論傳遞什么參數(shù),只要能被程序識別就可以得到確定的結(jié)果。類的多態(tài)性體現(xiàn)在方法的重載(overload)上,包括成員方法和構(gòu)造方法的重載。2 方法的重載方法的重載是指對同名方法的不同使用方式。l 程序功能:對不同的數(shù)進行排序輸出。在IntSort 類中定義3 個同名的方法sort,l 編寫SY3_3.java 文件,源代碼如下:import java.awt.Graphics;import java.applet.Applet;class IntSort public String sort(int a, int b) if (ab)return a+ +b;elsere
7、turn b+ +a;public String sort(int a, int b, int c) int swap;if (ab) swap=a;a=b;b=swap;if (ac) swap=a;a=c;c=swap;if (bc) swap=b;b=c;c=swap;return a+ +b+ +c;public String sort(int arr) String s= ;int swap;for (int i=0; iarr.length; i+)for (int j=0; jarrj+1) swap=arrj;arrj=arrj+1;arrj+1=swap;for (int i
8、=0; iarr.length; i+)s=s+arri+ ;return s;public class SY3_3 extends Applet IntSort s=new IntSort();public void paint(Graphics g) int a=30, b=12, c=40;int arr=34,8,12,67,44,98,52,23,16,16;g.drawString(兩個數(shù)的排序結(jié)果:+s.sort(a,b),30,30);g.drawString(三個數(shù)的排序結(jié)果:+s.sort(a,b,c),30,60);g.drawString(數(shù)組的排序結(jié)果:+s.sort
9、(arr),30,90);l 編譯并運行程序l 三個同名方法public String sort (int a, int b)public String sort (int a, int b, int c)public String sort (int arr)l 編寫SY3_3 類文件的頁面文件SY3_3.html3 構(gòu)造方法的重載構(gòu)造方法的名稱和類同名,沒有返回類型。盡管構(gòu)造方法看起來和一般的成員方法沒有差別,但它不是方法,也不是類的成員。因此,構(gòu)造方法不能直接調(diào)用,只能由new 操作符調(diào)用。構(gòu)造方法對于類是十分重要的,對象的初始化任務(wù)要靠構(gòu)造方法來完成。重載構(gòu)造方法的目的是提供多種初始化
10、對象的能力,使程序員可以根據(jù)實際需要選用合適的構(gòu)造方法來初始化對象。l 編寫構(gòu)造方法RunDemo 的重載程序文件SY3_4,源代碼如下:class RunDemo private String userName, password;RunDemo() System.out.println(全部為空!);RunDemo(String name) userName=name;RunDemo(String name, String pwd) this(name);password=pwd;check();void check() String s=null;if (userName!=null)s
11、=用戶名:+userName;elses=用戶名不能為空!;if (password!=12345678)s=s+ 口令無效!;elses=s+ 口令:*;System.out.println(s);public class SY3_4 public static void main(String args) new RunDemo();new RunDemo(劉新宇);new RunDemo(null,邵麗萍);new RunDemo(張馳,12345678);l 編譯并運行程序。l 三個構(gòu)造方法,其中第一個無參構(gòu)造方法RunDemo() 的實際作用是對成員變量賦缺省初值,由于userNam
12、e和password都是String 類,所以它們的缺省初值為null。第二個構(gòu)造方法RunDemo(String) 只有一個參數(shù),用來對成員變量userName 賦初值。第三個構(gòu)造方法RunDemo(String, String) 有兩個參數(shù),并有更多的內(nèi)容,首先調(diào)用this(name),其實際作用就是調(diào)用當前類的構(gòu)造方法RunDemo(String name);然后對成員變量password 賦值;最后調(diào)用check 方法來檢查userName 和password,類似于一般程序的口令驗證。重載構(gòu)造方法的執(zhí)行由對象根據(jù)實際參數(shù)的個數(shù)、類型和順序確定。(三)使用接口技術(shù) 1實現(xiàn) MouseL
13、istener 和 MouseMotionListener 兩個系統(tǒng)接口 l 編寫實現(xiàn)系統(tǒng)接口的程序文件 SY3_4.java,源代碼如下: import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class SY3_4 extends Applet implements MouseListener, MouseMotionListener int x1, y1, x2, y2; public void init() addMouseListener(this); addMouseMotionL
14、istener(this); public void paint(Graphics g) g.drawLine (x1, y1, x2, y2); public void mousePressed(MouseEvent e) / 記錄起點坐標 x1=e.getX(); y1=e.getY(); public void mouseClicked(MouseEvent e) public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseReleased(MouseEvent
15、 e) public void mouseDragged(MouseEvent e) / 記錄終點坐標 x2=e.getX(); y2=e.getY(); repaint(); public void mouseMoved(MouseEvent e) l 編譯 SY3_5.java 文件。 l 編寫 SY3_5.html 文件,源代碼如下: l 瀏覽器中打開 SY3_5.html 文件,在窗口中拖動鼠標可以隨意畫出一條線。1 創(chuàng)建自定義接口的方法 l 編寫實現(xiàn)自定義接口的程序文件 SY3_6.java,源代碼如下: interface Figurevoid set_size(double si
16、ze1,double size2);double get_area();class Triangle implements Figuredouble x,y;public void set_size(double size1,double size2) x=size1;y=size2;public double get_area()return(x*y/2);class Rectangle implements Figuredouble x,y; public void set_size(double size1,double size2) x=size1;y=size2;public dou
17、ble get_area()return(x*y);class outputstatic void put(Figure q) System.out.println(q.get_area();public class SY3_6public static void main(String args)Figure ft=new Triangle();Figure fr=new Rectangle();Rectangle r=new Rectangle();r.set_size(2,2);ft.set_size(2,2);fr.set_size(2,2);output.put(ft);output.put(fr);output.put(r);l 編譯并運行
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年法律規(guī)定公證離婚協(xié)議樣式版B版
- 2024年租賃合同標的及權(quán)利義務(wù)
- 2024年版:專業(yè)消毒服務(wù)合同模板3篇
- 2024年采購合作詳細協(xié)議樣式版B版
- 2024年高鐵車站建設(shè)勞務(wù)分包協(xié)議
- 導(dǎo)游基礎(chǔ)知識-中國四大宗教考試試題-(三)
- 2024租賃房屋場地合同
- 工業(yè)機器人技術(shù)基礎(chǔ)及應(yīng)用配套課件
- 2024版全新研究:節(jié)能減排項目貸款合同
- 信息科災(zāi)害脆弱性分析報告
- Unit4 What can you do Part B read and write (說課稿)-2024-2025學(xué)年人教PEP版英語五年級上冊
- 2025年MEMS傳感器行業(yè)深度分析報告
- 2024年度員工試用期勞動合同模板(含保密條款)3篇
- DB23-T 3840-2024非煤礦山隱蔽致災(zāi)因素普查治理工作指南
- 機關(guān)事業(yè)單位財務(wù)管理制度(六篇)
- 倉庫倉儲安全管理培訓(xùn)課件模板
- 風力發(fā)電場運行維護手冊
- 人教版六年級上冊數(shù)學(xué)第八單元數(shù)學(xué)廣角數(shù)與形單元試題含答案
- 叉車租賃合同模板
- 河道旅游開發(fā)合同
- 住房公積金稽核審計工作方案例文(4篇)
評論
0/150
提交評論