Java2SE基礎知識講解_第1頁
Java2SE基礎知識講解_第2頁
Java2SE基礎知識講解_第3頁
Java2SE基礎知識講解_第4頁
Java2SE基礎知識講解_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、IBM Software GroupJava2 SE講解IBM Software Group Java基礎1、語法基礎2、面向對象3、JDBC 4、異常課程內容課程內容IBM Software GroupOOP&Java Base面向對象編程(Object Oriented Programming,OOP,面向對象程序設計) 3IBM Software GroupJava學習路線學習路線Java SE應用程序設計:面向對象(類,繼承,接口,多態(tài),抽象與封裝) 異常處理,I/O編程,集合框架,GUI程序設計,多線程編程數(shù)據(jù)庫的學習:可以學習Oracle數(shù)據(jù)庫安裝配置、基本管理及開發(fā),使用

2、OEM/SQL Plus,標準SQL,DML,DDL,函數(shù),事務,約束,序列,索引,視圖,數(shù)據(jù)庫設計,MySql,SQL Server的基本使用。Java Web應用開發(fā):JDBC,JSP,Servlet,JavaBean,HTML,JavaScript,Session/cookie,MVC設計模式,Tomcat,Eclipse+MyEclipse. Java企業(yè)級應用開發(fā):Struts,Hibernate,XML,J2EE/EJB,UML,Spring,AJAX4IBM Software GroupJava 語言的發(fā)展歷史Java 已經(jīng)成為當今最為流行的軟件開發(fā)語言技術之一。5IBM Sof

3、tware GroupJava的平臺無關性Java是一種既面向對象又可以跨平臺的語言,即:編寫一次,隨處運行(Write once, Run anywhere);Java不僅適用于單機應用程序和基于網(wǎng)絡的程序,也可用于創(chuàng)建消費類設備的附件程序,如移動電話、掌上設備等。Java源程序代碼WindowsLinuxSolarisJVMJava虛擬機Java字節(jié)碼(可跨平臺)編譯運行6IBM Software GroupJava虛擬機Java虛擬機(Java Virtual Machine)是可運行Java字節(jié)碼的虛擬計算機系統(tǒng);使用Java語言編寫的程序,實際上是運行在JVM之上,而不是運行在操作系

4、統(tǒng)上;它有一個解釋器組件,可以實現(xiàn)Java字節(jié)碼和計算機操作系統(tǒng)之間的通信。用戶USER字節(jié)碼程序JVM (Java 虛擬機)操作系統(tǒng)硬 件7IBM Software GroupJava虛擬機的運行過程JIT代碼生成器.java源代碼文件.class字節(jié)碼文件編譯時運行時硬件類加載器字節(jié)碼校驗器解釋器8IBM Software GroupJava發(fā)展史 95年sun發(fā)布jdk1.0 98年jdk1.2 后續(xù)jdk1.3、1.4、1.5 目前jdk1.6、1.7 現(xiàn)在SUN已推出 Java 2 Platform Micro Edition (Java 2 ME) Java 2 Platform

5、Standard Edition (Java 2 SE) Java 2 Platform Enterprise Edition (Java 2 EE)IBM Software GroupJDK目錄 src.zip:核心API所有類的源文件 bin :包含編譯器,解釋器等可執(zhí)行文件 Demo:包含源代碼的程序示例 include:用于本地方法的文件 jre:Java運行環(huán)境 lib:Java類庫IBM Software GroupJava開發(fā)環(huán)境的下載、安裝、配置開發(fā)環(huán)境的下載、安裝、配置 下載:http:/ 安裝(windows環(huán)境下) 配置環(huán)境變量:path 驗證:Java versionJ

6、avac 編譯源文件Java 執(zhí)行文件編寫第一個Java文件:HelloWorld.javaIBM Software Group第一個第一個Java Application應用程序應用程序 打開記事本,新建一個文本文件,將文件名改為Hello.java,在文件中鍵入如下內容并保存:public class Hello public static void main(String args) System.out.println(Hello world!); IBM Software GroupJava源程序擴展名為擴展名為.java的源文件的源文件使用記事本使用記事本進行編輯進行編輯IBM S

7、oftware Group使用javac編譯器編譯源文件接下來需要將源程序進行編譯;進入命令提示行,切換到源文件所在的目錄,執(zhí)行javac命令,使用javac編譯器編譯源文件;javac命令的格式是:javac 完整的源文件名切換到源文件所在的目錄切換到源文件所在的目錄使用使用javac命令編譯源文件命令編譯源文件光標閃爍表示語法無誤,光標閃爍表示語法無誤,順利通過編譯順利通過編譯IBM Software Group.class(字節(jié)碼)文件 順利通過編譯后將生成一個擴展名為.class的字節(jié)碼文件(類描述文件)。擴展名為擴展名為.java的源文件的源文件通過編譯后通過編譯后生成的擴展名生成的

8、擴展名為為.class的的字節(jié)碼文件字節(jié)碼文件IBM Software Group使用java解釋器運行字節(jié)碼文件進入命令提示行,在字節(jié)碼文件所在的目錄下,執(zhí)行java命令,使用java解釋器運行字節(jié)碼文件;java命令的格式是:java 類名稱請注意:這里只需要類名稱,而不是帶擴展名的文件名。執(zhí)行執(zhí)行java命令運行字節(jié)碼文件命令運行字節(jié)碼文件程序運行效果程序運行效果IBM Software Group分析程序 關鍵字class用來定義一個類,Hello是類的名稱; 在Java程序中,所有的語句都必須放在某個類中; 整個類及其所有成員都包含在一對花括號中(即和之間),它們標志著類定義塊的開始

9、和結束。 定義類的一般語法:class 類名IBM Software Group分析程序3-2 程序必須從main函數(shù)開始執(zhí)行; 關鍵字public是訪問修飾符,用來控制類成員的可見范圍及作用域; 關鍵字static允許在不創(chuàng)建類的實例的情況下,調用main函數(shù); 關鍵字void用來說明main函數(shù)是沒有返回值的; args是字符串數(shù)組,用來從命令行接收參數(shù); main函數(shù)的一般形式如下:public static void main(String args)IBM Software Group分析程序 String是字符串類型的數(shù)組; 在Java中,類名稱一般首字母大寫; 使用System.

10、out.println()將信息輸出到控制臺上,即打印出來。IBM Software Group 常用Java 命令 編譯一個編譯一個java源文件源文件 $javac 運行運行java可運行文件可運行文件 $java -options class args. 生成生成java注釋文檔注釋文檔 $javadoc options packagenames sourcefiles files例:javadoc -d D:javados -sourcepath D:java abstractMoreType.java javadoc -d c:doc -sourcepath c:src -subpa

11、ckages com.liigo(遞歸所有com.liigo子包里的java文件) 生成一個生成一個jar包 $ jar ctxuvfm0Mi jar-file manifest-file -C directory files .例:例:jar -cvf aa.jar -C news . (把把news文件夾里的文件整個打包文件夾里的文件整個打包)IBM Software GroupJ2SE基礎語法基礎語法 標識符 數(shù)據(jù)類型 數(shù)據(jù)類型的轉換(主講四類八種) 運算符 條件語句、循環(huán)語句:if/for/while/dowhile()/break-continue/switchIBM Softwar

12、e Group標識符命名規(guī)范 Java語言中,為各種變量、方法和類等起的名字稱為標識(identifier)。 Java標識符的命名規(guī)則:應以字母、下下線(_)、美元符($) ,數(shù)字組成,但不能以數(shù)字開頭.Java標識符大小寫敏感,長度無限制 不能與關鍵字同名IBM Software GroupJava的基礎類型及常量的基礎類型及常量 Java的八種基礎類型:整型:byte、short、int(默認)、long字符型:char浮點型:float、double (默認)布爾型:boolean(一般用于程序的流程控制)注:Java采用Unicode編碼(全球語言統(tǒng)一編碼),每個字符占兩個字節(jié),因此

13、一個Char類型的變量可以存放一個漢字(一個漢字占兩個字節(jié))IBM Software GroupJava的基礎類型及常量的基礎類型及常量 長度 表示范圍byte 1字節(jié),8位 -2727-1short 2字節(jié),16位 -215215-1int 4字節(jié),32位 -231231-1long 8字節(jié),64位 -263263-1float 4字節(jié),32位 大約為+/- 3.403E38double 8字節(jié) 64位 大約+/-1.798E308IBM Software Group基本數(shù)據(jù)類型轉換boolean類型不可轉換為其他類型。整型,字符型,浮點型的數(shù)據(jù)在混合運算中相互轉換遵循如下原則:容量小的類型

14、自動轉換為容量大的,數(shù)據(jù)類型按容量大小排序如下:byte、short、char-int-long-float-doublebypt、short、char三者之間不互相轉換,三者參與運算時先轉換為int類型容量大的在轉換為容量小的時候要加強制轉換符,但可能造成精度降低或溢出浮點型常量默認值為double類型,整型常量默認值為int類型成員變量、局部變量、變量作用域在Java中,變量一旦聲明,就應對其進行初始化TestConvert.javaIBM Software Group基本數(shù)據(jù)類型轉換 int i = 1,j; float f1 = 0.1; float f2 = 123; long l1

15、 = 12345678; long l2 = 8888888888; double d1 = 2e20,d2 = 20; byte b1 = 1,b2 = 2, b3 = 129; j = j + 10; i = i / 10; i = i * 0.1; byte b = b1 - b2; float f3 = f1 + f2; float f4 = f1 + f2 * 0.1; double d = d1 * i + j; float f = (float)(d1 * 5 + d2);IBM Software GroupJava數(shù)據(jù)類型下分圖數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型類:class接口

16、:interface浮點型:float、double整型:byte、short、int、long布爾型:boolean字符型:char數(shù)值型數(shù)組IBM Software Group運算符:operator Java語言支持的運算符:語言支持的運算符:算術運算符:算術運算符:+,-,*,/,%,+,-關系運算符:關系運算符:,=,基本不用基本不用賦值運算符:賦值運算符:=擴展賦值運算符:擴展賦值運算符:+=,-=,*=,/=字符串連接運算符:字符串連接運算符:+ 注:+(-)在前時先計算后取值在后時先取值后計算int x = 2;System.out.println(1 + +x + 2 + x

17、); ?x = 2;System.out.println(1 + x+ + 2 + x); ?IBM Software Group邏輯運算符邏輯運算符邏輯運算符:邏輯運算符:【! 邏輯非邏輯非】【】【& 邏輯與邏輯與】【】【| 邏輯或邏輯或】【】【 邏輯異與邏輯異與】【】【& 短路與短路與】【】【| 短路或短路或】ab!aa&ba|baba&ba|btruetruefalsetruetruefalsetruetruetruefalsefalsefalsetruetruefalseTruefalsetruetruefalsetruetruefalsetruefal

18、sefalsetruefalsefalsefalsefalsefalsepublic static void main(String args)boolean a = true, b = false, c;c = !a;System.out.println(c);c = ab;System.out.println(c);c = a|b;System.out.println(c);c = a&b;System.out.println(c);c = a|b;System.out.println(c);c = a&b;System.out.println(c);”“邏輯異與:相同就為

19、邏輯異與:相同就為false,不同則為,不同則為true|和和|區(qū)別?區(qū)別?&和和&區(qū)別?區(qū)別?IBM Software Group字符串連接符字符串連接符“+”除用于加法運算外,還可以用于字符串的連接除用于加法運算外,還可以用于字符串的連接int i = 55 + 21;String s = “wang” + “hz”;“+”運算符兩側的操作數(shù)只要有一個字符串(運算符兩側的操作數(shù)只要有一個字符串(String)類型,系)類型,系統(tǒng)就會自動將另一個操作數(shù)轉換為字符串類型,然后連接:統(tǒng)就會自動將另一個操作數(shù)轉換為字符串類型,然后連接:int i = 12;System.out.p

20、rintln(“wanghz” + i); 輸出結果:輸出結果:wanghz12String s1 = 10+2+”qing”String s2 = “qing”+ 10+2 s1和和s2的輸出結果會是什么?的輸出結果會是什么?注:System.out.println(value);中的value無論是何類型,都會先轉為字符型,然后打印IBM Software Groupif條件語句條件語句條件語句格式:條件語句格式: if if else if else if if else if else if else只有一句要執(zhí)行的語句時只有一句要執(zhí)行的語句時 可以省略可以省略但是建議不要去但是建議不

21、要去 if(表達式表達式1) 語句塊語句塊1 else if(表達式表達式2) 語句塊語句塊2 else 語句塊語句塊3 表達式語句塊falsetrueTestIf.javaIBM Software Group循環(huán)控制語句循環(huán)控制語句For循環(huán)控制語句格式:循環(huán)控制語句格式: for(表達式表達式1;boolean類型的表達式類型的表達式2;表達式表達式3) 語句塊語句塊 注:注:continue和和break區(qū)別?區(qū)別?表達式1表達式2語句塊true表達式3falseTestFor.java課堂練習課堂練習編寫程序,用以個for循環(huán)計算1!+2!+3!+ +10!的值,并打印出計算結果。Od

22、dSum.javaIBM Software Groupwhile與do-whileWhile格式:格式: while(表達式表達式) 語句塊語句塊 do-while格式:格式: do 語句塊語句塊 while(表達式表達式);表達式true語句塊false語句塊表達式truefalse兩者區(qū)別?兩者區(qū)別?WhileTest.javaIBM Software Group循環(huán)語句舉例/輸出1100內前5個能被3整除的數(shù)public class Test public static void main(String args) int num = 0,i = 1; while(i=100) if (

23、i%3=0) System.out.print(i+ ); num+; if (num=5) break; i+; /輸出輸出101200內的質數(shù)內的質數(shù)public class Test public static void main(String args) for(int i=101;i200;i+=2) boolean f = true; for (int j=2;ji;j+) if (i%j=0) f = false; break; if (!f) continue; System.out.print(i+ ); IBM Software GroupSwitch條件控制條件控制Swi

24、tch 格式:格式: switch(表達式表達式) case 表達式表達式1: 語句塊語句塊1 break; case 表達式表達式2: 語句塊語句塊2 break; default :(可有可無可有可無) 語句塊語句塊3 break; 小心case穿透,推薦使用break語句多個case可以合并到一起default可以省略,但不推薦省略注:表達式必須是int類型的(byte,short,char,int),break語句穿透問題SwitchTest.javaIBM Software Group方法Java中的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:修飾符1 修飾

25、符2 . 返回值類型 方法名(形式參數(shù)列表) Java 語句 Sample: public String getName(String name) return “name = ” + name; 形式參數(shù): 在方法被調用時,用于接收外界輸入的數(shù)據(jù)。實參: 調用方法時,實際傳給方法的數(shù)據(jù)。返回值: 方法在執(zhí)行完畢后返還給調用它的環(huán)境的數(shù)據(jù)。返回值類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型void Java語言中使用下述形式調用方法:對象名.方法名(實參列表)實參的數(shù)目、數(shù)據(jù)類型和次序必須和所調用方法聲明的形參列表匹配return語句終止方法的運行,并指定要返回的數(shù)據(jù)返回值

26、類型:事先約定的返回值的數(shù)據(jù)類型,如無返回值,必須給出返回值類型void TestFuncation.javaIBM Software Group基本語法總結 標識符 數(shù)據(jù)類型 數(shù)據(jù)類型的轉換(主講四類八種) 運算符 條件語句、循環(huán)語句:if/for/while/dowhile()/break-continue/switchIBM Software Group面向對象 類與對象類與對象 對象在內存中的解析對象在內存中的解析 方法的重載(方法的重載(overload) 關鍵字:關鍵字:this、static、以及他們與類之間的、以及他們與類之間的關系關系 package和和import語句語句

27、繼承繼承 訪問控制符訪問控制符 多態(tài)多態(tài)IBM Software Group類與對象類與對象 類:具有相同屬性和功能的一類事物(屬性和方法的集合)。 抽象:對具有相同屬性和方法的一類事物的描述過程就叫抽象,抽象的結果就是類。 對象:類的一個實例,對象是組成類的元素。IBM Software Group類的定義類定義的格式:類定義的格式: 修飾符 class 類名 類體代碼 類的定義主要有兩部分組成:成員變量和方法/用class關鍵字定義類,例如: class Person /成員變量定義 private int id=1; private int age = 20; /定義方法 public

28、int getId() return id; public int getAge() return age; public void setAge(int i) age = i; IBM Software Group對象的創(chuàng)建Java語言中除基本數(shù)據(jù)類型之外的變量類型都稱之為引用類型。 Java中的對象是通過引用對其操作的。例如:/聲明了一個Person類型的變量,但并沒/有使它指向一個對象。Person p;/使用new語句創(chuàng)建了一個Person類型的對象,并用p指向它,以后可以通過p完成對它的操作。 p = new Person();p=nullstackheapPerson p;p =

29、new Person();pid:1age:20IBM Software Group方法的調用 class Person /成員變量定義 private int id; private int age = 20; /定義方法 public int getId() return id; public int getAge() return age; public void setAge(int i) age = i; public class Test public static void main(String args) Person p = new Person(); p.setAge(3

30、4); int age = p.getAge(); System.out.println(age); 使用 對象引用.方法名(參數(shù)列表)來調用對象的方法。IBM Software Group封裝性 類的封裝性:即不能讓外面的類隨意修改一個類的成員變量在定義一個類的成員(包括變量和方法),使用private關鍵字說明這個成員的訪問權限,只能被這個類的其他成員方法調用,而不能被其他的類中的方法所調用; 為實現(xiàn)封裝性,常將類的成員變量聲明為private,再通過public的方法來對這個變量進行訪問。對一個變量的操作,一般都有 讀取和賦值操作,我們一般定義兩個方法來實現(xiàn)這兩種操作,即:getXxx(

31、)與setXxx(); 一個類就是一個模塊,我們應該讓模塊僅僅公開必須要讓外界知道的內容,而隱藏其他的一切內容。再進行程序設計時,應盡量避免一個模塊直接修改或操作另一個模塊的數(shù)據(jù),模塊設計追求強內聚(許多功能盡量在類的內部獨立完成,不讓外面干預),弱耦合(提供給外部盡量少的方法調用)。IBM Software Group構造方法類內部一種特殊的方法,創(chuàng)建對象時所調用的方法。使用 new +構造方法名 創(chuàng)建一個新的對象。構造方法是定義在java類中的一個用來初始化對象的方法。構造方法沒有返回值類型,它與其他的方法在此處不同構造方法的方法名與類名完全相同class Person /成員變量定義 i

32、nt id; int age = 20; Person (int i,int n) id = i; age = n; IBM Software Group構造方法創(chuàng)建對象時,使用構造方法初始化對象的成員變量。 public class Test public static void main(String args) /創(chuàng)建對象 Person tom = new Person(1,25); Person jack = new Person(2,20); tomstackjack125220heapIBM Software Group構造方法每個類都至少有一個構造方法,如果我們沒有顯示的聲明,J

33、VM會在加載該類時為其添加一個public的無參的構造方法: 類名() 例如:class Point int x; int y; .main Point p = new Point();IBM Software Group課堂練習定義一個點(point)類用來表示三維空間中的點(有三個坐標) 。要求如下: 1. 可以生成具有特定坐標的點對象 2. 提供可以設置三個坐標的方法 3. 提供可以計算該”點”到原點距離平方的方法 4. 編寫程序驗證上面三點TestPoint.javaIBM Software Group方法的重載方法的重載方法的重載是指一個類中可以定義有相同的名字,但參數(shù)不同的多個方法

34、。方法的重載是指一個類中可以定義有相同的名字,但參數(shù)不同的多個方法。調用時會根據(jù)不同的參數(shù)表選擇對應的方法。調用時會根據(jù)不同的參數(shù)表選擇對應的方法。判斷方法重載的依據(jù):判斷方法重載的依據(jù):1、在同一個類內、在同一個類內2、方法名相同、方法名相同3、參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,或者參數(shù)的排列順序不同、參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,或者參數(shù)的排列順序不同4、方法的返回值的不同不能作為判斷方法重載的依據(jù),僅僅是返回值的不方法的返回值的不同不能作為判斷方法重載的依據(jù),僅僅是返回值的不同,就造成了方法的重名,會報錯同,就造成了方法的重名,會報錯。TestOverLoad.javaIBM S

35、oftware Group構造方法的重載構造方法的重載與普通方法一樣,構造方法也可以重載例如: Person類的構造方法class Person int id; int age; public Person() id = 1;age = 20 public Person(int m) id = m;age= 20; public Person(int m,int n) id = m;age= n; 課堂練習:課堂練習:利用Person類,編寫程序, 分別用三種構造方法創(chuàng)建三個Person對象,如下圖所示:p1p2p3120220536IBM Software Group關鍵字關鍵字this在類

36、的方法中使用。在類的方法中使用。This:當前對象的一個引用,指向它自己,在類的內部使用。當前對象的一個引用,指向它自己,在類的內部使用。有時使用有時使用this可以處理方法中成員變量和參數(shù)重名的情況??梢蕴幚矸椒ㄖ谐蓡T變量和參數(shù)重名的情況。 TestThis.javathisheapIBM Software Group關鍵字關鍵字static 在類中,用在類中,用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時被初始化,對于該類的所有對象來說,第一次使用時被初始化,對于該類的所有對象來說, static成員變量該

37、變量只成員變量該變量只有一份,保存在內存的有一份,保存在內存的data segment中。中。用用static聲明的方法,表示該方法為靜態(tài)方法,在調用方法時,不會將對象的聲明的方法,表示該方法為靜態(tài)方法,在調用方法時,不會將對象的引用傳遞給它,所以在引用傳遞給它,所以在static方法中,不能直接調用非靜態(tài)的成員變量或非靜方法中,不能直接調用非靜態(tài)的成員變量或非靜態(tài)的方法??梢灾苯油ㄟ^類名態(tài)的方法??梢灾苯油ㄟ^類名.靜態(tài)方法名調用。靜態(tài)方法名調用??梢酝ㄟ^對象、引用或類名可以通過對象、引用或類名(不需要實例化不需要實例化)訪問靜態(tài)成員。訪問靜態(tài)成員。TestStatic.javaTestFun

38、cation.javaIBM Software Grouppackage和import語句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問題,名沖突問題,java引入包引入包(package)機制。機制。package語句作為java源文件的第一條語句,指定該文件源文件的第一條語句,指定該文件中定義的類所在的包。中定義的類所在的包。它的格式為:它的格式為: package pkg1.pkg2.pkg3;Java編譯器把包對應于文件系統(tǒng)的目錄管理,編譯器把包對應于文件系統(tǒng)的目錄管理, package語句中,用.來指明包的層次,例如使用語句:

39、 package com.test; 則該文件中所有的類位于. comtest 目錄下TestPackage.javaIBM Software Group繼承子類通過繼承獲得基類的所有屬性(包括私有的)及方法。在子類通過繼承獲得基類的所有屬性(包括私有的)及方法。在創(chuàng)建子類對象時,可以通過子類對象調用基類的方法和訪問除創(chuàng)建子類對象時,可以通過子類對象調用基類的方法和訪問除去私有的一切成員變量。去私有的一切成員變量。繼承提高了代碼的復用性。繼承提高了代碼的復用性。子類可以擴展基類的方法及屬性。子類可以擴展基類的方法及屬性。子類對象的創(chuàng)建伴隨著父類對象的創(chuàng)建子類對象的創(chuàng)建伴隨著父類對象的創(chuàng)建Tes

40、tExtends.java(內存分析內存分析)ageageAnimalcolorCatIBM Software Group訪問權限控制訪問控制本類同一包中的類其他包中子類其他包中的類publicprotected缺省privateu Java權限修飾符public、private、protected置于類的成員定義前,用來限定其它對象對該類對象成員的訪問權限。u 對于class的權限修飾只可以用public和default。 public類可以在任何地方被訪問。 default類只可以被同一個包內的類訪問。 TestAccess.javaIBM Software Group繼承中的權限控制cl

41、ass Parent private int n_private = 1; int n_default = 2; protected int n_protected = 3; public int n_public = 4;class Child extends Parent public void f() n_private = 10; /error n_default = 20; n_protected = 30; n_public = 40; IBM Software Group課堂練習 編寫一個Computer 類,提供加(add)、減(reduce)、乘(sheng)、除(div)方

42、法。SubComputer類,繼承Computer 類,提供取余(mod)、求平方(square)、立方(cube)方法。TestComputer.javaIBM Software Group方法的重寫 在子類中可以根據(jù)需要對從基類中繼承來的方法進行重寫。 重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回類型。 重寫方法的訪問權限不能比被重寫方法的低。TestOverride.javaIBM Software Groupsuper關鍵字在子類中可以使用super關鍵字來引用基類的成分,例如:class FatherClass public int value; public void

43、f() value = 100; System.out.println(“FatherClass.value=” +value ); class ChildClass extends FatherClass public int value; public void f() super.f(); / 這里的super可以省略嗎? value = 200; System.out.println(“ChildClass.value=” +value ); System.out.println(“super.value=” +super.value ); .main. ChildClass cc =

44、 new ChildClass(); s.f();IBM Software Groupthissupervalue:200value:100ccIBM Software Groupsuper關鍵字class Person public static void prt(String s) System.out.println(s); Person() prt(A Person.); Person(String name) prt(A person name is:+name); public class Chinese extends Person Chinese() super(); /調用父

45、類構造函數(shù)(1),必須寫在第一行 prt(A chinese.); Chinese(String name) super(name);/調用父類具有相同形參的構造函數(shù)(2) prt(his name is:+name); Chinese(String name,int age) this(name);/調用當前具有相同形參的構造函數(shù)(3) prt(his age is:+age); public static void main(String args) Chinese cn=new Chinese(); cn=new Chinese(kevin); cn=new Chinese(kevin,

46、22); IBM Software Group課堂練習 創(chuàng)建一個僅有一個非缺省構造器的基類,并創(chuàng)建一個帶有缺省構造器和非缺省構造器的導出類。在導出類的構造器中調用基類的構造器。 IBM Software Group關鍵字final final修飾類,表示該類是不能被繼承的; final修飾成員變量,表示該變量為常量,值不可以被修改,變量名一般采用大寫字母,字母之間通過下下線連接; final修飾方法,表示該方法不能被重寫,但是可以使用 一般final和static一起用,當類被多次創(chuàng)建時,只創(chuàng)建一次變量,可以節(jié)約內存。IBM Software Groupclass Animal public

47、String name; Animal(String name) = name; class Cat extends Animal public String eyesColor; Cat(String n,String c) super(n); this.eyesColor = c; class Dog extends Animal public String furColor; Dog(String n,String c) super(n); this.furColor = c; 多態(tài)IBM Software Grouppublic class Testpublic s

48、tatic void main(String args) Test test = new Test();Animal a = new Animal(name);Cat c = new Cat(catName,blue);Dog d = new Dog(dogName,black);test.f(a);test.f(c);test.f(d); public void f(Animal a)System.out.println(name: +);if (a instanceof Cat) Cat cat = (Cat)a;System.out.println( +cat.eyesCol

49、or+ eyes);else if (a instanceof Dog) Dog dog = (Dog)a;System.out.println( +dog.furColor+ fur);多態(tài)IBM Software Group多態(tài)TestPolymoph/Test.java多態(tài)是指在執(zhí)行期間(而非編譯期)判斷所引用對象的實際類型,根據(jù)其實際的類型調用其相應的方法。上面例子中,根據(jù)Lady對象的成員變量Pet所引用的不同的實際類型而調用相應的enjoy方法。class Bird extends Animalprivate String featherColor;Bird(String n,St

50、ring f) super(n); this.featherColor = f; public void enjoy()System.out.println(鳥叫聲.);public class Test public static void main(String args) Bird b = new Bird(“birdname”,”green”); Lady l3 = new Lady(l3,b); l3.myPetEnjoy(); 1.要有繼承2.要有重寫3.父類引用指向子類對象IBM Software Group課堂練習分析上面的程序,體會“多態(tài)特性”對于系統(tǒng)可擴充性的重要性。 利用

51、多態(tài)性編程,實現(xiàn)求三角形,正方形和圓形面積。方法:抽象出一個共享父類,定義一函數(shù)為求面積的公共界面,再重新定義各形狀的求面積函數(shù)。在主類中創(chuàng)建不同類的對象,并求得不同形狀的面積。MianJi.javaIBM Software Group抽象類用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾方法時,該方法叫做抽象方法。含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。抽象類不能被實例化。抽象方法只需聲明,不需要實現(xiàn)。TestAbstract.javaabstract class Animal private String name; An

52、imal(String name) = name; abstract public void enjoy(); class Cat extends Animal private String eyesColor; Cat(String n,String c) super(n); this.eyesColor = c; public void enjoy()System.out.println(貓叫聲.);IBM Software Group課堂練習 創(chuàng)建一個基類,包含抽象方法print(),并在導出類中將其實現(xiàn)。重載的版本中會打印基類中定義的某個整型變量的值。在定義該變量時

53、,請賦予非零值。在基類的構造器中,可以調用這個方法。現(xiàn)在,在main()方法中,創(chuàng)建一個導出類對象,然后調用它的print()方法。解釋發(fā)生的情形。 IBM Software Group接口 接口是(interface)是抽象方法和常量值的定義的集合。 從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。 接口定義舉例:public interface runner int id = 1;public void start();public void run();public void stop();IBM Software Group接口特性 多個

54、無關的類可以實現(xiàn)同一個接口。 接口不能實例化。 一個類可以實現(xiàn)多個無關的接口。 定義java類的語法格式: class extends implements , . 接口中聲明屬性默認為 public static final 的,也只能是public static final 的;即使不寫,在編譯時會為其加上public static final。 接口中只能定義抽象方法,而且這些方法默認為public的,也只能是public的; 接口可以繼承其他的接口,并添加新的屬性和方法。IBM Software Groupinterface Singer public void sing();publ

55、ic void sleep();class Student implements Singerprivate String name;Student(String name) = name;public String getName()return name;public void study()System.out.println(studying);public void sing()System.out.println(student is singing);public void sleep()System.out.println(student is sleepin

56、g);接口舉例IBM Software Groupinterface Painter public void paint();public void eat();class Teacher implements Singer,Painterprivate String name;Teacher(String name) = name;public String getName()return name;public void teach()System.out.println(teaching);public void sing()System.out.println(teacher is singing);public void sleep()System.out.println(teacher is sleeping);public void paint()System.out.println(teacher is painting);public void eat()System.out.println(teacher is eating);IBM Soft

溫馨提示

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

評論

0/150

提交評論