版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、java程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)類類對象對象包包繼承繼承訪問權(quán)限訪問權(quán)限接口接口jar文檔文檔java程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)深刻理解深刻理解OOPOOP中類和對象的概念中類和對象的概念會定義類、并會由類創(chuàng)建對象會定義類、并會由類創(chuàng)建對象深刻理解類的成員變量和成員方法深刻理解類的成員變量和成員方法理解包的概念、會使用包語句理解包的概念、會使用包語句深刻理解繼承的概念、掌握深刻理解繼承的概念、掌握J(rèn)avaJava的繼承方式的繼承方式在掌握包和繼承等概念的基礎(chǔ)上,掌握訪問權(quán)限問題在掌握包和繼承等概念的基礎(chǔ)上,掌握訪問權(quán)限問題結(jié)合類掌握接口的概念、并會定義和使用接口結(jié)合類
2、掌握接口的概念、并會定義和使用接口會使用會使用jarjar工具將相關(guān)文件打成工具將相關(guān)文件打成jarjar文檔并發(fā)布文檔并發(fā)布java程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一類的概念類的概念類是組成類是組成JavaJava程序的基本單元程序的基本單元類是用來創(chuàng)建對象的模板(對象是類的實(shí)例)類是用來創(chuàng)建對象的模板(對象是類的實(shí)例)OOPOOP的三個基本特性:的三個基本特性:封裝性:封裝性:類封裝了一類對象的狀態(tài)(成員變量)類封裝了一類對象的狀態(tài)(成員變量)和功能(成員方法)和功能(成員方法)繼承性:繼承性:可在已有類的基礎(chǔ)上進(jìn)行擴(kuò)展,
3、產(chǎn)生可在已有類的基礎(chǔ)上進(jìn)行擴(kuò)展,產(chǎn)生子類,實(shí)現(xiàn)代碼重用和功能的擴(kuò)充子類,實(shí)現(xiàn)代碼重用和功能的擴(kuò)充多態(tài)性:多態(tài)性:方法的重載方法的重載( (靜態(tài)靜態(tài)) )和覆蓋和覆蓋( (動態(tài)動態(tài)) )JavaJava提供了大量的類供用戶使用(提供了大量的類供用戶使用(JFCJFC)面向?qū)ο蟪绦蛟O(shè)計(jì)的主要工作:面向?qū)ο蟪绦蛟O(shè)計(jì)的主要工作:了解已有類的基本情況了解已有類的基本情況擴(kuò)展已有類建立自己的新類并創(chuàng)建有關(guān)對象擴(kuò)展已有類建立自己的新類并創(chuàng)建有關(guān)對象1.1. 實(shí)現(xiàn)它們之間的交互完成系統(tǒng)目標(biāo)實(shí)現(xiàn)它們之間的交互完成系統(tǒng)目標(biāo)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一類的聲明類的聲明格式格式 訪
4、問修飾符訪問修飾符 class ClassNameclass ClassName 成員變量聲明;成員變量聲明; 成員方法聲明;成員方法聲明; 說明說明訪問修飾符可以是訪問修飾符可以是publicpublic或或省略省略類名中每個詞的首字母大寫,做到見名知義類名中每個詞的首字母大寫,做到見名知義成員變量用來刻畫類的屬性(狀態(tài));成員變量用來刻畫類的屬性(狀態(tài));成員方法用來刻畫類的功能;成員方法用來刻畫類的功能;1.1.通過成員方法可使實(shí)現(xiàn)對成員變量的操作通過成員方法可使實(shí)現(xiàn)對成員變量的操作javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)舉例舉例( (Example0301_Circ
5、le.javaExample0301_Circle.java) )public class Example0301_Circlepublic class Example0301_Circle double r; double r; double s; double s; void setR(double r1) r = r1; void setR(double r1) r = r1; double getR() return r; double getR() return r; double getS() return 3.14 double getS() return 3.14 * * r
6、r * * r; r; 成成員員變變量量成成員員方方法法javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一變量變量變量的種類變量的種類實(shí)例成員變量(簡稱實(shí)例變量)實(shí)例成員變量(簡稱實(shí)例變量)類成員變量(簡稱類變量)類成員變量(簡稱類變量)局部變量局部變量 注意:在注意:在JavaJava類的定義中沒有類的定義中沒有全局變量全局變量的概念的概念變量的聲明變量的聲明實(shí)例變量實(shí)例變量:訪問修飾符訪問修飾符 類型名類型名 變量名;變量名; / private double r/ private double r; / int s/ int s;類變量類變量:訪問修飾符訪問修飾符 stat
7、ic static 類型名類型名 變量名;變量名; / public static int a/ public static int a;1.1.局部變量局部變量:類型名:類型名 變量名;變量名;/ double x/ double x;javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)說明說明一個類中不允許出現(xiàn)兩個同名的成員變量一個類中不允許出現(xiàn)兩個同名的成員變量類的成員變量可以和方法中的局部變量同名類的成員變量可以和方法中的局部變量同名一個方法中不允許出現(xiàn)兩個同名的局部變量一個方法中不允許出現(xiàn)兩個同名的局部變量public void f()public void f() int
8、x = 1;int x = 1;for (int i = 0; i 10; i+)for (int i = 0; i 10; i+) int x = 0; int x = 0; /error/error System.out.println(“i=“ + i); System.out.println(“i=“ + i); /error/error javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)變量的作用域變量的作用域?qū)嵗蓡T變量和類成員變量在整個類中有效實(shí)例成員變量和類成員變量在整個類中有效局部變量只在定義它的復(fù)合語句中有效局部變量只在定義它的復(fù)合語句中有效當(dāng)局部變量與成員變量重
9、名時,在局部變量的當(dāng)局部變量與成員變量重名時,在局部變量的作用域內(nèi)成員變量被隱藏,例如:作用域內(nèi)成員變量被隱藏,例如:class Tomclass Tomint x = 98, y;int x = 98, y;void f1()void f1() int x = 3; y = x; int x = 3; y = x; /此處此處y=3y=3void f2()void f2() y = x; y = x; /此處此處y=98y=98 /盡量避免局部變量與成員變量重名盡量避免局部變量與成員變量重名javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一成員方法(簡稱方法)成員方法(簡稱方法
10、)方法的種類方法的種類實(shí)例方法實(shí)例方法類方法類方法/實(shí)例方法和類方法的區(qū)別在于聲明時是否使實(shí)例方法和類方法的區(qū)別在于聲明時是否使用了關(guān)鍵字用了關(guān)鍵字staticstatic,帶有,帶有staticstatic的是類方法的是類方法方法的聲明方法的聲明 訪問修飾符訪問修飾符 staticstatic 返回值類型返回值類型 方法名(形參表)方法名(形參表) 局部變量說明部分;局部變量說明部分;/不一定有不一定有語句部分;語句部分;/一般要有,以實(shí)現(xiàn)方法的功能一般要有,以實(shí)現(xiàn)方法的功能 javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)說明說明方法一般都使用方法一般都使用publicpubl
11、ic進(jìn)行訪問修飾進(jìn)行訪問修飾沒有返回值的方法要用沒有返回值的方法要用voidvoid類型修飾類型修飾一個方法可以沒有形參表,但要保留一個方法可以沒有形參表,但要保留()()例如:例如:public double getArea()public double getArea() double area;double area;area = ;area = ;return area;return area; javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)構(gòu)造方法構(gòu)造方法構(gòu)造方法是構(gòu)造方法是與類名同名且沒有返回值與類名同名且沒有返回值的一類特的一類特殊的殊的實(shí)例實(shí)例方法方法構(gòu)造方法是構(gòu)
12、造方法是在創(chuàng)建(在創(chuàng)建(newnew)對象時調(diào)用)對象時調(diào)用的的構(gòu)造方法是構(gòu)造方法是可以重載(可以有多個)可以重載(可以有多個)的的確定一個類中所擁有的構(gòu)造方法:確定一個類中所擁有的構(gòu)造方法:若存在顯式定義的構(gòu)造方法若存在顯式定義的構(gòu)造方法有幾個就是幾個有幾個就是幾個;否則否則只有一個只有一個默認(rèn)的無參的構(gòu)造方法默認(rèn)的無參的構(gòu)造方法javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)構(gòu)造方法示例構(gòu)造方法示例public class Circlepublic class Circle double r; double r; public Circle() r = 1.0; public
13、Circle() r = 1.0; public Circle(double rr) r = rr; public Circle(double rr) r = rr; / / 其他方法定義其他方法定義 思考問題:思考問題:該類中共有幾個構(gòu)造方法?該類中共有幾個構(gòu)造方法?若去掉構(gòu)造方法若去掉構(gòu)造方法后共有幾個構(gòu)造方法?后共有幾個構(gòu)造方法?若去掉構(gòu)造方法若去掉構(gòu)造方法后共有幾個構(gòu)造方法?后共有幾個構(gòu)造方法?若去掉構(gòu)造方法若去掉構(gòu)造方法和和后共有幾個構(gòu)造方法?后共有幾個構(gòu)造方法?/ / 默認(rèn)的構(gòu)造方法實(shí)現(xiàn)將成員變量初始化為默認(rèn)值默認(rèn)的構(gòu)造方法實(shí)現(xiàn)將成員變量初始化為默認(rèn)值javajava程序設(shè)計(jì)程序設(shè)
14、計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)方法的重載方法的重載方法重載是指一個類中可以有多個方法具有相方法重載是指一個類中可以有多個方法具有相同的名字,但它們的同的名字,但它們的參數(shù)必須不同參數(shù)必須不同(個數(shù)或類(個數(shù)或類型不同)型不同)如果兩個方法的返回值類型不同,但參數(shù)相同,如果兩個方法的返回值類型不同,但參數(shù)相同,這種情況下的重載是不允許的這種情況下的重載是不允許的重載可以實(shí)現(xiàn)同一個方法名的多種不同功能,重載可以實(shí)現(xiàn)同一個方法名的多種不同功能,體現(xiàn)了體現(xiàn)了靜態(tài)多態(tài)性靜態(tài)多態(tài)性例如:例如:public void f();public void f();public int f(int a);publi
15、c int f(int a);public double f(int a); public double f(int a); /error/errorpublic double f(double a);public double f(double a);javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一內(nèi)部類內(nèi)部類定義在某個類里面的類,稱為定義在某個類里面的類,稱為嵌入類嵌入類或或內(nèi)部類內(nèi)部類在下例中,在下例中,B B就是一個嵌入類就是一個嵌入類 public class Apublic class A class B class B 嵌入類可訪問被嵌入類的變量和方法嵌入類可訪問
16、被嵌入類的變量和方法嵌入類的字節(jié)碼文件名為:嵌入類的字節(jié)碼文件名為:A$B.classA$B.class嵌入類主要用于創(chuàng)建適配器類(一般匿名)嵌入類主要用于創(chuàng)建適配器類(一般匿名)在一個方法內(nèi)部定義的類,稱為在一個方法內(nèi)部定義的類,稱為局部內(nèi)部類局部內(nèi)部類其他類要想訪問內(nèi)部類時,可如下操作:其他類要想訪問內(nèi)部類時,可如下操作:A a = new A();A a = new A();1.1.A.B b = a.new B();A.B b = a.new B();java程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一對象的概念對象的概念1.1
17、.對象是對象是類的實(shí)例,它具有狀態(tài)、行為和身份類的實(shí)例,它具有狀態(tài)、行為和身份1.1.類相當(dāng)于定義的一種數(shù)據(jù)類型(靜態(tài)的)類相當(dāng)于定義的一種數(shù)據(jù)類型(靜態(tài)的)而對象就是該而對象就是該類型的一個變量(動態(tài)的)類型的一個變量(動態(tài)的)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)對象的聲明對象的聲明格式:格式:訪問修飾符訪問修飾符 類名類名 對象名;對象名;例如:例如:Circle circle1, circle2; String s;javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)對象的創(chuàng)建對象的創(chuàng)建格式:格式:對象名對象名 = new 類的構(gòu)造方法(實(shí)參表)類的構(gòu)造方
18、法(實(shí)參表);例如:例如:circle1 = new Circle(); circle2 = new Circle(5.5); s = new String(“Hello!”);javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一對象的內(nèi)存模型對象的內(nèi)存模型一個聲明后的對象變量用來存放對象的一個聲明后的對象變量用來存放對象的引用引用在未獲得分配的內(nèi)存前,對象變量的值為在未獲得分配的內(nèi)存前,對象變量的值為nullnull為對象分配的內(nèi)存空間,稱為該對象的為對象分配的內(nèi)存空間,稱為該對象的實(shí)體實(shí)體在分配內(nèi)存空間(在分配內(nèi)存空間(newnew)后,對象變量中存放這)后,對象變量中存放這塊
19、內(nèi)存空間(實(shí)體)的引用(內(nèi)存空間代表)塊內(nèi)存空間(實(shí)體)的引用(內(nèi)存空間代表)1.1.一個對象變量的值會由于賦值而發(fā)生改變一個對象變量的值會由于賦值而發(fā)生改變javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n變量的內(nèi)存模型變量的內(nèi)存模型類變量的內(nèi)存類變量的內(nèi)存是在類的字節(jié)碼文件被加載到內(nèi)存是在類的字節(jié)碼文件被加載到內(nèi)存時就分配的,且只分配一次,各對象共享,直到時就分配的,且只分配一次,各對象共享,直到程序退出時釋放(所有對象只有一個內(nèi)存映像)程序退出時釋放(所有對象只有一個內(nèi)存映像)實(shí)例變量的內(nèi)存實(shí)例變量的內(nèi)存在每次創(chuàng)建對象時分配,不同對在每次創(chuàng)建對象時分配,不同對象的實(shí)例變量所占
20、內(nèi)存空間不同,當(dāng)該對象不存象的實(shí)例變量所占內(nèi)存空間不同,當(dāng)該對象不存在時釋放(每個對象都有一個內(nèi)存映像)在時釋放(每個對象都有一個內(nèi)存映像)局部變量的內(nèi)存局部變量的內(nèi)存在定義該局部變量的復(fù)合語句被在定義該局部變量的復(fù)合語句被調(diào)用時分配,語句塊執(zhí)行完畢后釋放調(diào)用時分配,語句塊執(zhí)行完畢后釋放javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一方法的內(nèi)存模型方法的內(nèi)存模型類方法的內(nèi)存類方法的內(nèi)存是在類的字節(jié)碼文件被加載到內(nèi)存是在類的字節(jié)碼文件被加載到內(nèi)存時就分配的,且只分配一次,各對象共享,直到時就分配的,且只分配一次,各對象共享,直到程序退出時釋放(只有一個內(nèi)存映像)程序退出時釋放(只
21、有一個內(nèi)存映像)1.1.實(shí)例方法的內(nèi)存實(shí)例方法的內(nèi)存在第一次創(chuàng)建對象時分配,且只在第一次創(chuàng)建對象時分配,且只分配一次,各對象共享,當(dāng)該類的所有對象都不分配一次,各對象共享,當(dāng)該類的所有對象都不存在時釋放(只有一個內(nèi)存映像)存在時釋放(只有一個內(nèi)存映像)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一實(shí)例考查實(shí)例考查 class Aclass A int x; int x; /實(shí)例變量實(shí)例變量 static int y; static int y; /類變量類變量 public float f(int x1,int x2) public float f(int x1,int x2
22、) /實(shí)例方法實(shí)例方法 public static float g(int a) public static float g(int a) /類方法類方法 javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)nullnulla1a2A0gy0 xCD010 xAB01nulla2f0 xCD260 xCD010 xCD260 xAB010 xAC02gfyx00 xA002a10 xA002g0 xCD01f0 xCD26y0 xAB01x00 xBC010 xA0C0A a1,a2;A a1,a2;na1 = new A();a1 = new A();na2 = a1;a2 = a1
23、;a2 = new A();a2 = new A();類類A的成員的成員x 實(shí)例變量實(shí)例變量y 類變量類變量f實(shí)例方法實(shí)例方法g 類方法類方法1.1.加載類加載類A A時,類變量時,類變量y y和類方法和類方法g g即被分配內(nèi)存即被分配內(nèi)存javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一對象的使用對象的使用訪問變量訪問變量格式:格式:對象名對象名. .變量名變量名對于類變量常用:對于類變量常用:類名類名. .變量名變量名訪問方法訪問方法格式:格式:對象名對象名. .方法名(實(shí)參表)方法名(實(shí)參表)1.1.對于類方法常用:對于類方法常用:類名類名. .方法名(實(shí)參表)方法名(實(shí)參
24、表)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)說明說明類變量和類方法在不創(chuàng)建對象時就可以用類名類變量和類方法在不創(chuàng)建對象時就可以用類名進(jìn)行訪問進(jìn)行訪問類方法只能操作類變量,只能調(diào)用類方法類方法只能操作類變量,只能調(diào)用類方法實(shí)例方法對實(shí)例變量和類變量都能操作,實(shí)例方法對實(shí)例變量和類變量都能操作,對實(shí)例方法和類方法都能調(diào)用對實(shí)例方法和類方法都能調(diào)用參數(shù)的值傳遞參數(shù)的值傳遞復(fù)合的概念復(fù)合的概念對于一個類的成員變量來說,既可以是基本數(shù)對于一個類的成員變量來說,既可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型據(jù)類型,也可以是引用數(shù)據(jù)類型如果是類類型的成員變量,即出現(xiàn)了復(fù)合如果是類類型的成員變
25、量,即出現(xiàn)了復(fù)合例子:例子: Example0302_Taper.javaExample0302_Taper.javajava程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一包的概念包的概念1.1.包包是有效管理類的一種機(jī)制,它是有效管理類的一種機(jī)制,它可將相關(guān)的類組可將相關(guān)的類組織在一起(類的集合)織在一起(類的集合)2.2.包的使用能夠減少命名沖突問題,能夠提供更多包的使用能夠減少命名沖突問題,能夠提供更多方面的保護(hù)方面的保護(hù)3.3.包是分層次的,即采用樹形結(jié)構(gòu)定義包是分層次的,即采用樹形結(jié)構(gòu)定義4.4.包是不嵌套的,沒有任何一個包包含
26、另一個包包是不嵌套的,沒有任何一個包包含另一個包5.5.JDKJDK中提供了大量的包供用戶使用中提供了大量的包供用戶使用javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n包的聲明包的聲明格式:格式:package package 包名包名; ;說明說明packagepackage語句必須是源文件的語句必須是源文件的第一條語句第一條語句若源文件中無若源文件中無packagepackage語句,則是語句,則是無名包無名包包名可以僅是一個合法的標(biāo)識符,也可以是以包名可以僅是一個合法的標(biāo)識符,也可以是以“.”.”分割的若干個標(biāo)識符的組合,分割的若干個標(biāo)識符的組合,如:如:package m
27、yselfpackage myself; package XXX.YYY.ZZZpackage XXX.YYY.ZZZ;當(dāng)聲明了一個包時,要求目錄結(jié)構(gòu)中存在與包當(dāng)聲明了一個包時,要求目錄結(jié)構(gòu)中存在與包名對應(yīng)的目錄,名對應(yīng)的目錄,例如若有:例如若有:package tom.jiafeipackage tom.jiafei;則應(yīng)存在:則應(yīng)存在:.tomjiafei.tomjiafei例子:例子:Example0303_Package.javaExample0303_Package.javajavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一導(dǎo)入包中的類導(dǎo)入包中的類導(dǎo)入方法導(dǎo)入方法imp
28、ort java.util.Date;import java.util.Date;import java.awt.import java.awt.* *; ;注意:只有包中的公共類被導(dǎo)入注意:只有包中的公共類被導(dǎo)入說明說明系統(tǒng)自動引入系統(tǒng)自動引入java.langjava.lang包中的類包中的類當(dāng)導(dǎo)入自定義包中的類時,可能需要更新當(dāng)導(dǎo)入自定義包中的類時,可能需要更新classpathclasspath的值,以便系統(tǒng)能找到要導(dǎo)入的類的值,以便系統(tǒng)能找到要導(dǎo)入的類若導(dǎo)入的類中有重名時,會出現(xiàn)錯誤提示若導(dǎo)入的類中有重名時,會出現(xiàn)錯誤提示若不導(dǎo)入包中的類,就要使用類的全名,這樣若不導(dǎo)入包中的類,就要
29、使用類的全名,這樣很不方便,如:很不方便,如:java.awt.Font f=new java.awt.Font();java.awt.Font f=new java.awt.Font();1.1.導(dǎo)入多余的類,會增加編譯時間,但不會增加導(dǎo)入多余的類,會增加編譯時間,但不會增加運(yùn)行時間運(yùn)行時間javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)Java中常用的包中常用的包java.langjava.lang(由系統(tǒng)自動導(dǎo)入其中的類)(由系統(tǒng)自動導(dǎo)入其中的類)java.awtjava.awtjava.awt.eventjava.awt.eventjava.utiljava.utiljav
30、a.iojava.iojava.appletjava.appletjava.sqljava.sqljavax.swingjavax.swingjava程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一繼承的概念繼承的概念繼承是繼承是OOPOOP中實(shí)現(xiàn)代碼重用的一種方式中實(shí)現(xiàn)代碼重用的一種方式繼承是一種從已有的類創(chuàng)建子類的機(jī)制繼承是一種從已有的類創(chuàng)建子類的機(jī)制子類繼承已有類的狀態(tài)和行為,并可以擴(kuò)充子類繼承已有類的狀態(tài)和行為,并可以擴(kuò)充由繼承而得到的類叫由繼承而得到的類叫子類子類,被繼承的類叫,被繼承的類叫超類超類JavaJava中不支持多繼承(
31、子類只能有一個超類)中不支持多繼承(子類只能有一個超類)在在JavaJava類層次結(jié)構(gòu)的頂端是類層次結(jié)構(gòu)的頂端是ObjectObject類類1.1.在未指定超類的類定義中,其超類默認(rèn)為在未指定超類的類定義中,其超類默認(rèn)為ObjectObjectjavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一子類的創(chuàng)建子類的創(chuàng)建格式格式 訪問修飾符訪問修飾符 class class 子類名子類名 extends extends 超類名超類名 示例示例 import javax.swing.JApplet;import javax.swing.JApplet;public class MyClas
32、s public class MyClass extends JAppletextends JApplet javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一this關(guān)鍵字關(guān)鍵字thisthis是一個代表當(dāng)前對象的特殊關(guān)鍵字是一個代表當(dāng)前對象的特殊關(guān)鍵字thisthis只能用在實(shí)例方法中,不能出現(xiàn)在類方法中只能用在實(shí)例方法中,不能出現(xiàn)在類方法中thisthis的基本用法如下例所示:的基本用法如下例所示: class Aclass A int x; int x; A(int x) A(int x,int y) void f() A(int x) A(int x,int y) voi
33、d f() this.x = x;this.x = x; this(x);this(x); int x = 3; int x = 3; this.x += y; this.x += y; this.x = x + 5;this.x = x + 5; 區(qū)別于形參區(qū)別于形參 調(diào)用其它構(gòu)造方法調(diào)用其它構(gòu)造方法 區(qū)別于局部變量區(qū)別于局部變量注意:通過注意:通過thisthis調(diào)用構(gòu)造方法時只能是第一條語句調(diào)用構(gòu)造方法時只能是第一條語句javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一super關(guān)鍵字關(guān)鍵字supersuper是一個代表超類的特殊關(guān)鍵字是一個代表超類的特殊關(guān)鍵字supers
34、uper只能用在實(shí)例方法中,不能用在類方法中只能用在實(shí)例方法中,不能用在類方法中supersuper的基本用法如下例所示:的基本用法如下例所示: class A class B extends Aclass A class B extends A int x; int x; int x; int x; A(int x) B(int x,int y) A(int x) B(int x,int y) this.x = x; super(x); this.x = x; super(x);/去掉此句會出錯去掉此句會出錯 this.x = super.x + y; this.x = super.x +
35、y; 注意:通過注意:通過supersuper調(diào)用超類的構(gòu)造方法時只能是第一條語調(diào)用超類的構(gòu)造方法時只能是第一條語句;子類必須顯示句;子類必須顯示/ /隱式地調(diào)用超類的構(gòu)造方法隱式地調(diào)用超類的構(gòu)造方法javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n上轉(zhuǎn)型對象上轉(zhuǎn)型對象由于繼承性,可以把一個子類對象的引用放到一由于繼承性,可以把一個子類對象的引用放到一個超類對象中。若個超類對象中。若A A是是B B的超類,則:的超類,則:B b = new B();B b = new B();A a = b;A a = b;這時稱超類對象這時稱超類對象a a為子類對象為子類對象b b的的上轉(zhuǎn)型對象
36、上轉(zhuǎn)型對象。但。但a a不能訪問不能訪問b b中新增加的變量和方法中新增加的變量和方法反過來賦值時要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,兩種情況反過來賦值時要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,兩種情況把上轉(zhuǎn)型對象賦給子類對象,如把上轉(zhuǎn)型對象賦給子類對象,如 b = (B)ab = (B)a;則則b b得到子類定義的所有變量和方法得到子類定義的所有變量和方法把未經(jīng)過上轉(zhuǎn)的超類對象賦給子類對象,如:把未經(jīng)過上轉(zhuǎn)的超類對象賦給子類對象,如:A aa = new A();A aa = new A();b = (B)aa;b = (B)aa; /這種賦值不能使用這種賦值不能使用當(dāng)超類對象接收不同的子類對象時,對于被覆蓋當(dāng)超類對象接收不同
37、的子類對象時,對于被覆蓋的方法的調(diào)用可能會體現(xiàn)出動態(tài)多態(tài)性的方法的調(diào)用可能會體現(xiàn)出動態(tài)多態(tài)性java程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一包的訪問包的訪問1.包的訪問是沒有控制的,根據(jù)需要導(dǎo)入即可包的訪問是沒有控制的,根據(jù)需要導(dǎo)入即可2.例如:例如:import java.io.*;javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一類的訪問修飾符類的訪問修飾符1.public:公共類,任何類都可以訪問公共類,任何類都可以訪問2.默認(rèn)(省略):默認(rèn)(省略):友好類,同一包中的類可訪問友好類,同一包中的類可訪問修飾符修飾
38、符同包同包不同包不同包publicYesYes默認(rèn)默認(rèn)YesNojavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一類的其它屬性(跟在訪問修飾符后面)類的其它屬性(跟在訪問修飾符后面)1.final:最終類,不能被其他類所繼承最終類,不能被其他類所繼承2.abstract:抽象類抽象類一般用于描述一般用于描述層次較高類層次較高類(提供行為模板)(提供行為模板)抽象類常含有抽象類常含有抽象方法抽象方法以描述應(yīng)具有的功能以描述應(yīng)具有的功能抽象方法只有說明,沒有方法體抽象方法只有說明,沒有方法體抽象類中也可以沒有抽象方法抽象類中也可以沒有抽象方法若一個類中含有抽象方法則該類必須為抽象類若
39、一個類中含有抽象方法則該類必須為抽象類抽象類的對象抽象類的對象不能用不能用new創(chuàng)建創(chuàng)建應(yīng)用時需要繼承抽象類而產(chǎn)生非抽象的子類,應(yīng)用時需要繼承抽象類而產(chǎn)生非抽象的子類,并且子類要實(shí)現(xiàn)其中所有的抽象方法;否則子并且子類要實(shí)現(xiàn)其中所有的抽象方法;否則子類也要聲明為抽象的類也要聲明為抽象的javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一成員變量和成員方法的訪問修飾符成員變量和成員方法的訪問修飾符1.public:公共的公共的2.protected:受保護(hù)的受保護(hù)的3.默認(rèn)(省略):默認(rèn)(省略):友好的友好的4.private:私有的私有的javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編
40、程基礎(chǔ)編程基礎(chǔ)一一子類繼承超類成員的規(guī)則子類繼承超類成員的規(guī)則修飾符修飾符同一包中同一包中不同包中不同包中publicYesYesprotectedYesYes默認(rèn)默認(rèn)YesNoprivateNoNojavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)若子類的成員變量與超類中的若子類的成員變量與超類中的同名同名,則該變量不,則該變量不是從超類繼承來的,而屬于子類中新定義的是從超類繼承來的,而屬于子類中新定義的class A class B extends Aclass A class B extends A int x; int x; int x; int x;A(int x) B(i
41、nt x,int y)A(int x) B(int x,int y) super(x); super(x); this.x = x; this.x = 5; this.x = x; this.x = 5; this.x += super.x + y; this.x += super.x + y; class C class C public static void main(String args) public static void main(String args) A a = new A(1); A a = new A(1); B b = new B(3,3); B b = new B
42、(3,3); 請思考去掉請思考去掉B中的中的 int x; 語句時的情況語句時的情況javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)若子類的方法與超類中的若子類的方法與超類中的相同相同,則稱為子類覆蓋,則稱為子類覆蓋了超類中的該方法(動態(tài)多態(tài)性)了超類中的該方法(動態(tài)多態(tài)性)子類重寫超類中的方法時,不能降低訪問權(quán)限。子類重寫超類中的方法時,不能降低訪問權(quán)限。高低順序:高低順序:publicpublic,protectedprotected,默認(rèn),默認(rèn),privateprivate當(dāng)超類中的一個方法未被子類重寫時,則子類繼當(dāng)超類中的一個方法未被子類重寫時,則子類繼承了該方法,其行為與
43、超類中的相同承了該方法,其行為與超類中的相同當(dāng)某個對象調(diào)用一個方法時,它實(shí)際上是沿著繼當(dāng)某個對象調(diào)用一個方法時,它實(shí)際上是沿著繼承的層次逐層向上查找該方法的定義的承的層次逐層向上查找該方法的定義的構(gòu)造方法是構(gòu)造方法是不可以繼承不可以繼承的的子類的每個構(gòu)造方法都子類的每個構(gòu)造方法都必須在一開始調(diào)用父類的必須在一開始調(diào)用父類的某一個構(gòu)造方法某一個構(gòu)造方法;若子類的構(gòu)造方法;若子類的構(gòu)造方法未顯式調(diào)用未顯式調(diào)用父類的構(gòu)造方法,則系統(tǒng)默認(rèn)父類的構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用的是父類的無調(diào)用的是父類的無參構(gòu)造方法參構(gòu)造方法,此時如果父類中不存在無參的構(gòu)造,此時如果父類中不存在無參的構(gòu)造方法,就會出錯方法,就會
44、出錯javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一成員變量和成員方法的訪問權(quán)限成員變量和成員方法的訪問權(quán)限修飾符修飾符同一包中同一包中不同包中不同包中同一類中同一類中不同類中不同類中子類中子類中非子類中非子類中publicYesYesYesYesprotectedYesYesYesNo默認(rèn)默認(rèn)YesYesNoNoprivateYesNoNoNojavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一成員變量的其它屬性成員變量的其它屬性1.static:用于定義類成員變量用于定義類成員變量2.final:相當(dāng)于定義常量,只能初始化一次,以后相當(dāng)于定義常量,只能初始化一次
45、,以后其值不能被修改其值不能被修改javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一成員方法的其它屬性成員方法的其它屬性1.static:用于定義類成員方法用于定義類成員方法2.final:此種方法在子類中不能被覆蓋此種方法在子類中不能被覆蓋3.abstract:此種方法不能含有方法體,且包含此種此種方法不能含有方法體,且包含此種方法的類必須聲明為抽象類方法的類必須聲明為抽象類4.synchronized:用于線程同步訪問用于線程同步訪問javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一例子:例子:Example0304_Inheritance.javaExampl
46、e0304_Inheritance.javajava程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一接口的概念接口的概念接口接口提供了其他類要實(shí)現(xiàn)的一個行為模板提供了其他類要實(shí)現(xiàn)的一個行為模板與抽象類不同的是:使用相同接口的類不一定要與抽象類不同的是:使用相同接口的類不一定要有繼承關(guān)系有繼承關(guān)系接口中成員變量默認(rèn)都是接口中成員變量默認(rèn)都是public static finalpublic static final接口中所有方法都是接口中所有方法都是只聲明不實(shí)現(xiàn)只聲明不實(shí)現(xiàn)1.1.接口中方法默認(rèn)都是接口中方法默認(rèn)都是public abstra
47、ctpublic abstractjavajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n接口的聲明接口的聲明格式格式訪問修飾符訪問修飾符 interface interface 接口名接口名 常量聲明;常量聲明; 方法聲明;方法聲明; 訪問修飾符可以是訪問修飾符可以是publicpublic或默認(rèn)(省略),其含或默認(rèn)(省略),其含義和規(guī)定與聲明類相同義和規(guī)定與聲明類相同示例示例public interface ShapeAreapublic interface ShapeArea public static finalpublic static final int TYPE = 1 i
48、nt TYPE = 1;public abstractpublic abstract double getArea(); double getArea(); javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n接口的使用接口的使用格式格式訪問修飾符訪問修飾符 class class 類名類名 implements implements 接口名列表接口名列表 說明說明若一個類使用了某接口,它必須實(shí)現(xiàn)該接口中若一個類使用了某接口,它必須實(shí)現(xiàn)該接口中聲明的所有方法,并用聲明的所有方法,并用publicpublic修飾修飾若一個類使用了某個接口,但沒有實(shí)現(xiàn)該接口若一個類使用了某個接口,但沒有
49、實(shí)現(xiàn)該接口中的所有方法,該類必須是中的所有方法,該類必須是abstractabstract類類不能用不能用newnew實(shí)例化一個接口,但可以聲明接口實(shí)例化一個接口,但可以聲明接口變量,并可以接收實(shí)現(xiàn)該接口的類對象變量,并可以接收實(shí)現(xiàn)該接口的類對象接口也可以使用接口也可以使用extendsextends關(guān)鍵字進(jìn)行擴(kuò)展關(guān)鍵字進(jìn)行擴(kuò)展javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一接口回調(diào)接口回調(diào)接口回調(diào)是指可以把實(shí)現(xiàn)某一接口的類所創(chuàng)建的接口回調(diào)是指可以把實(shí)現(xiàn)某一接口的類所創(chuàng)建的對象的引用賦給用該接口聲明的接口變量,則該對象的引用賦給用該接口聲明的接口變量,則該接口變量就可調(diào)用被類實(shí)
50、現(xiàn)的接口中的方法接口變量就可調(diào)用被類實(shí)現(xiàn)的接口中的方法在需要的時候也可以強(qiáng)制把一個接口變量再轉(zhuǎn)換在需要的時候也可以強(qiáng)制把一個接口變量再轉(zhuǎn)換為實(shí)現(xiàn)該接口的一個類對象為實(shí)現(xiàn)該接口的一個類對象1.1.接口回調(diào)也體現(xiàn)了動態(tài)多態(tài)性接口回調(diào)也體現(xiàn)了動態(tài)多態(tài)性javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)例子例子 Example0305_Interface.javaExample0305_Interface.javajava程序設(shè)計(jì)程序設(shè)計(jì)03-編程基礎(chǔ)編程基礎(chǔ)javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)一一Jar文檔的概念文檔的概念1.1.jarjar文件是一種將相關(guān)文件組織
51、在一起,并且進(jìn)文件是一種將相關(guān)文件組織在一起,并且進(jìn)行了壓縮的文件格式,擴(kuò)展名為行了壓縮的文件格式,擴(kuò)展名為.jar.jar2.2.使用使用jarjar文檔可以用來發(fā)布應(yīng)用程序文檔可以用來發(fā)布應(yīng)用程序javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n生成生成JarJar文檔文檔1.1.使用使用JDKJDK提供的提供的 jar.exejar.exe 命令命令2.2.格式:格式:jar cvf jar cvf 壓縮后的文檔名壓縮后的文檔名 被壓縮的文件被壓縮的文件javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n解壓解壓JarJar文檔文檔1.1.格式:格式:jar xvf jar xvf 壓縮后的文檔名壓縮后的文檔名2.2.也可使用其它的解壓軟件,如也可使用其它的解壓軟件,如 WinRARWinRAR 等等javajava程序設(shè)計(jì)程序設(shè)計(jì)03-03-編程基礎(chǔ)編程基礎(chǔ)n執(zhí)行執(zhí)行JarJar文檔文檔1.1.設(shè)置主類設(shè)置主類在壓縮后的在壓縮后的jarjar文檔中,有一個文檔中,有一個
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店大堂的安保措施介紹
- 旅游科普服務(wù)合同
- 藝術(shù)涂料施工協(xié)議
- 市政環(huán)衛(wèi)灑水車租賃合同
- 退休硬件工程師維護(hù)合同
- 租賃GPS車輛安全監(jiān)控系統(tǒng)合同
- 臨時檢驗(yàn)員聘用合同模板
- 城市規(guī)劃光纖鋪設(shè)合同
- 古董家具修復(fù)噴漆協(xié)議
- 空調(diào)維修工程師聘用合同年薪制
- 事業(yè)單位獎勵審批表主要事跡教師300字范文六篇
- 2024農(nóng)村集體經(jīng)濟(jì)壯大之路
- 油船貨物操作教材配套課件第四章 惰性氣體系統(tǒng)
- 口腔每周工作總結(jié)簡短
- 學(xué)校宿舍樓建設(shè)工程施工組織設(shè)計(jì)方案
- 2024年南昌健康職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 學(xué)前教育實(shí)訓(xùn)項(xiàng)目設(shè)計(jì)方案
- 2024年學(xué)位考試英語詞匯表
- 外科靜脈切開穿刺術(shù)
- 醫(yī)院運(yùn)營管理分析報(bào)告模板
- 設(shè)備維保的現(xiàn)狀與趨勢
評論
0/150
提交評論