版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、5.1 超類與繼承類的關(guān)系 向上轉(zhuǎn)換(upcasting):把繼承類作為父類使用5.2 通過classpath訪問另一個目錄中的類 一個類能夠訪問另一個類: 1、這兩個類在同一個文件中 2、若不在同一個文件中,他們在同一個目錄里 若這兩個類不滿足上面的條件,還希望能夠訪問,就必須設(shè)置classpath,用來指出類所在的路徑。 譬如:Him1.java在d:javaplus目錄中 public class Him1 public int k = 100; 要訪問Him1.java的類Me1.java在d:scjpc4目錄中 public class Me1public static void m
2、ain(String args)Him1 him=new Him1();System.out.println("Him.i= "+him.i);為了是Me1能夠找到Him1,我們設(shè)置classpath= d:scjpc4 ;d:javaplus5.3 通過軟件包訪問另一個目錄中的類1、建立軟件包 package 軟件包名稱; 例如把Him2.class放到mypack . lib1軟件包里: package mypack.lib1;public class Him2public int i=100;當(dāng)編譯完Him2.java后,把Him2.class放到目錄mypackli
3、b1中,此時的classpath 恰好設(shè)置在mypack目錄的父目錄上。實際目錄是d:javaplusmypacklib1,classpath=d:javaplus2、使用軟件包 import 軟件包; 例如類Me2.java要訪問Him2類: import mypack.lib1.Him2; public class Me2 . 注意:Me2.class在d:scjpc4 下,而Him2.class在d:javaplusmypacklib1下,因為要運行Me2類,而且Me2類在運行時要能夠找到Him2類,所以設(shè)置classpath 為: classpath= d:scjpc4 ; d:jav
4、aplus3、在程序中正確使用package 和import語句的順序 package *.* import *.* class * 程序中只可能有一個package語句,但可以有多條import語句。 舉例: path已經(jīng)被設(shè)置為:path=C:jdkbin 1)文件Him2.java package mypack . lib1;public class Him2 public int i=100;2)文件test.java package mypack . lib2;import mypack . lib1 .*;public class test public static void m
5、ain(String args) Him2 h = new Him2(); System.out.print(h.i); 3)設(shè)置classpath = d:project編譯Him2.java將Him2.class移動到d:projectmypacklib1編譯test.java將test.class移動到d:projectmypacklib2 4)運行test無論當(dāng)前目錄在哪里,想要運行test.class,如下所示: java mypack.lib2.test5.4 存取(訪問)控制1、存取控制符:用來限定類可被外界訪問的程度。1) public :可以修飾類、數(shù)據(jù)和方法,表示所修飾的事
6、物是公共財產(chǎn),可以被任何程序訪問。一個類前面沒有public和其他修飾符,他也可以被其他類訪問,但是要滿足:Ø 兩個類在同一個文件中Ø 兩個類在同一個文件夾中Ø 兩個類在同一個軟件包中2) private :他修飾的數(shù)據(jù)只能在數(shù)據(jù)所在的類中才能使用,他修飾的方法只能在方法所在的類中使用,即使同一個文件的其他類也不能訪問。3) protected :針對繼承,表示他所修飾的數(shù)據(jù)或者方法對繼承類公開,即繼承類可以訪問超類中的protected數(shù)據(jù)和方法,但外界不能訪問。他不能修飾類。例子:在軟件包mypack . lib1中的一個類Parent:package myp
7、ack.lib1;public class Parent protected int i=100;下面這個程序要訪問Parent,但是和Parent不在同一個文件夾中:import mypack.lib1.Parent;public class Children extends Parent public static void main(String args) Children son=new Children(); Parent father=new Parent(); System.out.println("son.i= "+son.i); /success Sys
8、tem.out.println("father.i= "+father.i); / error 2、總結(jié) public(類、類中的數(shù)據(jù)和方法):任何類可訪問 protected(類中的數(shù)據(jù)和方法):繼承類和同一軟件包的類可訪問 private(類中的數(shù)據(jù)和方法):只能在其修飾的數(shù)據(jù)和方法所在的類內(nèi)可訪問 無存取控制符(類、類中的數(shù)據(jù)和方法):同一軟件包的類可訪問5.5 抽象類和抽象方法1、abstract使用關(guān)鍵字abstract修飾一個類,這個類就是抽象類;修飾一個方法,這個方法就是抽象方法。 astract class AbstractClassExample int
9、k;abstract void Func(); 注意: 1)若一個類是抽象類,就不能創(chuàng)建這個類的對象,必須使用繼承的方法來訪問抽象類中的成員;2)抽象方法沒有方法的定義體;3)若一個類中有一個抽象方法,那麼這個類就是抽象類;4)直接繼承抽象類的類必須實現(xiàn)抽象類中的抽象方法。2、具體例子 abstract class AbstractClassExample int i;abstract void abstractFunc();void notAbstractFunc1()void notAbstractFunc2()i = 0;class Class1 extends AbstractClas
10、sExamplevoid abstractFunc()i = 1;class Class2 extends AbstractClassExamplevoid abstractFunc()class Class3 extends Class1void abstractFunc()i = 3;class Class4 extends Class33、盡管不能創(chuàng)建抽象類的對象,但是抽象類可以有一個main方法,即抽象類可以運行 public abstract class AbstractClass1 int j;public abstract void func1( );public static
11、void main(String args) System.out.println(" i am abstract class");5.6 接口interface與多重繼承1、接口基礎(chǔ) interface InterfaceExample int j = 4;int k = 5;void func1( );int func2( int x );接口中的所有數(shù)據(jù)成員都是static 和final,即靜態(tài)常量,可以不用這兩個關(guān)鍵字修飾,但并且必須給常量賦初值;接口中的方法都是抽象方法,并且全部為public。2、類可以使用接口 注意:1)c.func2 (k) 由于k是接口中的
12、數(shù)據(jù)成員,因此是靜態(tài)常量,可以直接使用。 2)接口中的方法都是public,因此,必須在實現(xiàn)方法時加上關(guān)鍵字public。3、抽象類可以執(zhí)行接口,可以實現(xiàn)或者不實現(xiàn)接口中的方法 4、多重繼承 Java不允許一個類繼承多個類,即最多只能繼承一個類。但是可以通過執(zhí)行多個接口來達(dá)到多重繼承的效果: interface InterfaceExample1int i=4;void func1(); interface InterfaceExample2int k=5;void func2();class Class3 public void func2()System.out.println("
13、;func2 in class3");public class InterfaceClass2 extends Class3 implements InterfaceExample1,InterfaceExample2 int j;public void func1()System.out.println("func1 in InterfaceClass2");/*public void func2() System.out.println("func2 in InterfaceClass2"); */public static void ma
14、in(String args) InterfaceClass2 c=new InterfaceClass2(); c.func1(); c.func2();接口之間使用extends關(guān)鍵字表示繼承,并且被繼承的接口以逗號分隔:5、接口的類型轉(zhuǎn)換(Upcasting) interface A void f ( A a );class C implements A public void f ( A a )System.out.println(" f( )");public static void main(String args)C c=new C ( );c.f (c);方
15、法f的參數(shù)類型為A,但是可以用C來調(diào)用,即執(zhí)行接口的類也是接口的一種類型,和繼承超類的子類原理想同。5.7 內(nèi)部類基礎(chǔ)1、內(nèi)部類:定義在一個類內(nèi)部的類。2、例子: 內(nèi)部類可以直接訪問外部類的成員,不需要創(chuàng)建外部類的對象;而外部類則不能 外部類要想訪問內(nèi)部類: 1)創(chuàng)建外部類的對象如outerOuter outer = new Outer( ); 2)創(chuàng)建內(nèi)部類的對象如innerOuter . Inner inner = outer . new Inner( ); 3)訪問內(nèi)部類成員inner . m1( 2 );5.8 Java的存儲結(jié)構(gòu)Java把存儲器分為:1、 寄存器2、棧3、堆4、靜態(tài)存
16、儲區(qū)5、常量存儲區(qū)5.9 編寫類實現(xiàn)循環(huán)鏈表 1、節(jié)點類Noteclass Note public String data;public int x;public int y;public Note next;public Note( String d , int offset_x , int offset_y ) data = d; x = offset_x;y = offset_y; 2、循環(huán)鏈表類Queryclass Query final int wh = 10;private Note head ;private Note p ;int num;public Query() head
17、 = new Note( "head" , wh , wh ); head.next = head;num = 1; public Query( int size ) head = new Note( "head" , ( size + 2 ) * wh , wh + 20 ); head.next = head;num = 1; int i,j;Note add;add = new Note size ; for ( j = 1 ; j < size ; j + ) add j = new Note( String.valueOf( j ) ,
18、( size + 2 ) * wh - j * wh , wh + 20 ) ;/addElement( add j );p = head; for ( i = 1 ; i < num ; i + ) p = p.next; add j .next = head; p.next = add j ; num +; public void addElement( Note add ) p = head;for ( int i = 1 ; i < num ; i + ) p = p.next;add.next = head;p.next = add;head = add;num +; public void move( int x , int y ) p = head;for ( int i = 0 ; i < num - 1 ; i + ) p = p.next;p.x = head.x + x;p.y = head.y + y;head = p; public int getX(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年外研版六年級語文上冊階段測試試卷
- 2025年度汽車配件購銷合同規(guī)范范本2篇
- 2025年度環(huán)保設(shè)備維修與性能提升合同3篇
- 完善教師教育培養(yǎng)體系的創(chuàng)新策略與實施方案
- 2025年新世紀(jì)版八年級語文下冊月考試卷
- 2025年青島版六三制新八年級科學(xué)上冊月考試卷含答案
- 2024年滬教新版九年級科學(xué)上冊月考試卷
- 2024年滬科版選修4化學(xué)上冊月考試卷含答案
- 2024年北師大版高二化學(xué)下冊階段測試試卷含答案
- 中小學(xué)備課數(shù)字化轉(zhuǎn)型的現(xiàn)狀分析
- 《格林童話》課外閱讀試題及答案
- “銷售技巧課件-讓你掌握銷售技巧”
- 2019北師大版高中英語選修一UNIT 2 單詞短語句子復(fù)習(xí)默寫單
- 房地產(chǎn)項目保密協(xié)議
- 2023年云南省初中學(xué)業(yè)水平考試 物理
- 【安吉物流股份有限公司倉儲管理現(xiàn)狀及問題和優(yōu)化研究15000字(論文)】
- 火災(zāi)自動報警系統(tǒng)施工及驗收調(diào)試報告
- 《13464電腦動畫》自考復(fù)習(xí)必備題庫(含答案)
- 中國成人血脂異常防治指南課件
- 2023塔式太陽能熱發(fā)電廠集熱系統(tǒng)設(shè)計規(guī)范
- 消費稅改革對商貿(mào)企業(yè)的影響與對策
評論
0/150
提交評論