




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、java基礎(chǔ)學(xué)習(xí)總結(jié)抽象類一、抽象類介紹下面通過一下的小程序深入理解抽象類因此在類Animal里面只需要定義這個enjoy()方法就可以了,使用abstract關(guān)鍵字把enjoy()方法定義成一個抽象方法,定義如下:public abstract void enjoy(); 從某種意義上來說,抽象方法就是被用來重寫的,所以在父類聲明的抽象方法一定要在子類里面重寫。如果真的不想在子類里面重寫這個方法,那么可以再在子類里面把這個方法再定義為抽象方法,因為子類覺得我去實現(xiàn)也不合適,應(yīng)該讓繼承我的子類去實現(xiàn)比較合適,因此也可以在繼承這個子類的下一個子類里面重寫在父類里面聲明的抽象方法,這是可以的。這里
2、有一個規(guī)則:既然父類里面的方法是抽象的,那么對于整個類來說,它就有一個沒有實現(xiàn)的方法,這個方法不知道怎么去實現(xiàn),那么這個類是就是殘缺不全的,因此這個類應(yīng)該被定義為一個抽象類。所以前面這樣聲明的聲明的class Animal應(yīng)該要在class的前面加上abstract,即聲明成這樣:abstract class Animal,這樣Animal類就成了一個抽象類了。Animal類的最終定義代碼如下:復(fù)制代碼 1 /* 2 * 父類Animal 3 * 在class的前面加上abstract,即聲明成這樣:abstract class Animal 4 * 這樣Animal類就成了一個抽象類了 5
3、*/ 6 abstract class Animal 7 8 public String name; 9 10 public Animal(String name) 11 = name;12 13 14 /*15 * 抽象方法16 * 這里只有方法的定義,沒有方法的實現(xiàn)。17 */18 public abstract void enjoy(); 19 20 復(fù)制代碼Java語言規(guī)定,當一個類里面有抽象方法的時候,這個類必須被聲明為抽象類。子類繼承父類時,如果這個父類里面有抽象方法,并且子類覺得可以去實現(xiàn)父類的所有抽象方法,那么子類必須去實現(xiàn)父類的所有抽象方法,如:復(fù)制代碼
4、1 /* 2 * 子類Dog繼承抽象類Animal,并且實現(xiàn)了抽象方法enjoy 3 * author gacl 4 * 5 */ 6 class Dog extends Animal 7 /* 8 * Dog類添加自己特有的屬性 9 */10 public String furColor;11 12 public Dog(String n, String c) 13 super(n);/調(diào)用父類Animal的構(gòu)造方法14 this.furColor = c;15 16 17 Override18 public void enjoy() 19 System.out.println(狗叫.);2
5、0 21 22 復(fù)制代碼這個父類里面的抽象方法,子類如果覺得實現(xiàn)不了,那么把就子類也聲明成一個抽象類,如:復(fù)制代碼 1 /* 2 * 這里的子類Cat從抽象類Animal繼承下來,自然也繼承了Animal類里面聲明的抽象方法enjoy(), 3 * 但子類Cat覺得自己去實現(xiàn)這個enjoy()方法也不合適,因此它把它自己也聲明成一個抽象的類, 4 * 那么,誰去實現(xiàn)這個抽象的enjoy方法,誰繼承了子類,那誰就去實現(xiàn)這個抽象方法enjoy()。 5 * author gacl 6 * 7 */ 8 abstract class Cat extends Animal 9 10 /*11 * Ca
6、t添加自己獨有的屬性12 */13 public String eyeColor;14 15 public Cat(String n, String c) 16 super(n);/調(diào)用父類Animal的構(gòu)造方法17 this.eyeColor = c;18 19 復(fù)制代碼這里的子類Cat從抽象類Animal繼承下來,自然也繼承了Animal類里面聲明的抽象方法enjoy(),但子類Cat覺得自己去實現(xiàn)這個enjoy()方法也不合適,因此它把它自己也聲明成一個抽象的類,那么,誰去實現(xiàn)這個抽象的enjoy方法,誰繼承了子類,那誰就去實現(xiàn)這個抽象方法enjoy()。如:復(fù)制代碼 1 /* 2 *
7、子類BlueCat繼承抽象類Cat,并且實現(xiàn)了從父類Cat繼承下來的抽象方法enjoy 3 * author gacl 4 * 5 */ 6 class BlueCat extends Cat 7 8 public BlueCat(String n, String c) 9 super(n, c);10 11 12 /*13 * 實現(xiàn)了抽象方法enjoy14 */15 Override16 public void enjoy() 17 System.out.println(藍貓叫.);18 19 20 復(fù)制代碼完整的測試代碼如下:復(fù)制代碼 1 package javastudy.summary
8、; 2 3 /* 4 * 父類Animal 5 * 在class的前面加上abstract,即聲明成這樣:abstract class Animal 6 * 這樣Animal類就成了一個抽象類了 7 */ 8 abstract class Animal 9 10 public String name; 11 12 public Animal(String name) 13 = name; 14 15 16 /* 17 * 抽象方法 18 * 這里只有方法的定義,沒有方法的實現(xiàn)。 19 */ 20 public abstract void enjoy(); 21 22 23
9、24 /* 25 * 這里的子類Cat從抽象類Animal繼承下來,自然也繼承了Animal類里面聲明的抽象方法enjoy(), 26 * 但子類Cat覺得自己去實現(xiàn)這個enjoy()方法也不合適,因此它把它自己也聲明成一個抽象的類, 27 * 那么,誰去實現(xiàn)這個抽象的enjoy方法,誰繼承了子類,那誰就去實現(xiàn)這個抽象方法enjoy()。 28 * author gacl 29 * 30 */ 31 abstract class Cat extends Animal 32 33 /* 34 * Cat添加自己獨有的屬性 35 */ 36 public String eyeColor; 37 3
10、8 public Cat(String n, String c) 39 super(n);/調(diào)用父類Animal的構(gòu)造方法 40 this.eyeColor = c; 41 42 43 44 /* 45 * 子類BlueCat繼承抽象類Cat,并且實現(xiàn)了從父類Cat繼承下來的抽象方法enjoy 46 * author gacl 47 * 48 */ 49 class BlueCat extends Cat 50 51 public BlueCat(String n, String c) 52 super(n, c); 53 54 55 /* 56 * 實現(xiàn)了抽象方法enjoy 57 */ 58
11、 Override 59 public void enjoy() 60 System.out.println(藍貓叫.); 61 62 63 64 65 /* 66 * 子類Dog繼承抽象類Animal,并且實現(xiàn)了抽象方法enjoy 67 * author gacl 68 * 69 */ 70 class Dog extends Animal 71 /* 72 * Dog類添加自己特有的屬性 73 */ 74 public String furColor; 75 76 public Dog(String n, String c) 77 super(n);/調(diào)用父類Animal的構(gòu)造方法 78
12、this.furColor = c; 79 80 81 Override 82 public void enjoy() 83 System.out.println(狗叫.); 84 85 86 87 88 public class TestAbstract 89 90 /* 91 * param args 92 */ 93 public static void main(String args) 94 95 /* 96 * 把Cat類聲明成一個抽象類以后,就不能再對Cat類進行實例化了, 97 * 因為抽象類是殘缺不全的,缺胳膊少腿的,因此抽象類不能被實例化。 98 */ 99 /Cat c
13、= new Cat(Catname,blue);100 Dog d = new Dog(dogname,black);101 d.enjoy();/調(diào)用自己實現(xiàn)了的enjoy方法102 103 BlueCat c = new BlueCat(BlueCatname,blue);104 c.enjoy();/調(diào)用自己實現(xiàn)了的enjoy方法105 106 復(fù)制代碼JavaBean總結(jié)一、什么是JavaBeanJavaBean是一個遵循特定寫法的Java類,它通常具有如下特點:這個Java類必須具有一個無參的構(gòu)造函數(shù)屬性必須私有化。私有化的屬性必須通過public類型的方法暴露給其它程序,并且方法的
14、命名也必須遵守一定的命名規(guī)范。javaBean范例:復(fù)制代碼 1 package gacl.javabean.study; 2 3 /* 4 * author gacl 5 * Person類就是一個最簡單的JavaBean 6 */ 7 public class Person 8 9 /-Person類封裝的私有屬性-10 / 姓名 String類型11 private String name;12 / 性別 String類型13 private String sex;14 / 年齡 int類型15 private int age;16 /是否已婚 boolean類型17 private b
15、oolean married;18 /-19 20 /-Person類的無參數(shù)構(gòu)造方法-21 /*22 * 無參數(shù)構(gòu)造方法23 */24 public Person() 25 26 27 /-28 29 /-Person類對外提供的用于訪問私有屬性的public方法-30 public String getName() 31 return name;32 33 34 public void setName(String name) 35 = name;36 37 38 public String getSex() 39 return sex;40 41 42 public
16、void setSex(String sex) 43 this.sex = sex;44 45 46 public int getAge() 47 return age;48 49 50 public void setAge(int age) 51 this.age = age;52 53 54 public boolean isMarried() 55 return married;56 57 58 public void setMarried(boolean married) 59 this.married = married;60 61 /-62 復(fù)制代碼JavaBean在J2EE開發(fā)中
17、,通常用于封裝數(shù)據(jù),對于遵循以上寫法的JavaBean組件,其它程序可以通過反射技術(shù)實例化JavaBean對象,并且通過反射那些遵守命名規(guī)范的方法,從而獲知JavaBean的屬性,進而調(diào)用其屬性保存數(shù)據(jù)。二、JavaBean的屬性JavaBean的屬性可以是任意類型,并且一個JavaBean可以有多個屬性。每個屬性通常都需要具有相應(yīng)的setter、 getter方法,setter方法稱為屬性修改器,getter方法稱為屬性訪問器。屬性修改器必須以小寫的set前綴開始,后跟屬性名,且屬性名的第一個字母要改為大寫,例如,name屬性的修改器名稱為setName,password屬性的修改器名稱為s
18、etPassword。 屬性訪問器通常以小寫的get前綴開始,后跟屬性名,且屬性名的第一個字母也要改為大寫,例如,name屬性的訪問器名稱為getName,password屬性的訪問器名稱為getPassword。 一個JavaBean的某個屬性也可以只有set方法或get方法,這樣的屬性通常也稱之為只寫、只讀屬性。三、在JSP中使用JavaBeanJSP技術(shù)提供了三個關(guān)于JavaBean組件的動作元素,即JSP標簽,它們分別為:標簽:用于在JSP頁面中查找或?qū)嵗粋€JavaBean組件。標簽:用于在JSP頁面中設(shè)置一個JavaBean組件的屬性。標簽:用于在JSP頁面中獲取一個JavaBe
19、an組件的屬性。3.1、標簽標簽用于在指定的域范圍內(nèi)查找指定名稱的JavaBean對象,如果存在則直接返回該JavaBean對象的引用,如果不存在則實例化一個新的JavaBean對象并將它以指定的名稱存儲到指定的域范圍中。 常用語法: id屬性用于指定JavaBean實例對象的引用名稱和其存儲在域范圍中的名稱。class屬性用于指定JavaBean的完整類名(即必須帶有包名)。scope屬性用于指定JavaBean實例對象所存儲的域范圍,其取值只能是page、request、session和application等四個值中的一個,其默認值是page。標簽使用范例:復(fù)制代碼 1 2 %- 3 在
20、jsp中使用jsp:useBean標簽來實例化一個Java類的對象 4 5 :表示在JSP中要使用JavaBean。 6 id:表示生成的實例化對象,凡是在標簽中看見了id,則肯定表示一個實例對象。 7 class:此對象對應(yīng)的包.類名稱 8 scope:此javaBean的保存范圍,四種范圍:page、request、session、application 9 -%10 11 23 24 25 26 jsp:useBean標簽使用范例27 28 29 30 31 姓名:32 性別:33 年齡:34 已婚:35 36 3.2、執(zhí)行原理 上面我們在index.jsp中使用實例化了一個gacl.j
21、avabean.study.Person類的對象,那么這個peson對象是怎么實例化出來的呢?index.jsp在執(zhí)行的過程中首先會翻譯成一個servlet,因此我們可以通過查看index.jsp頁面生成的servlet的java代碼來查看peson對象的實例化過程找到tomcat服務(wù)器下的workCatalinalocalhost項目名稱orgapachejsp這個目錄,就可以看到將index.jsp頁面翻譯成servlet的java源碼了復(fù)制代碼1 gacl.javabean.study.Person person = null;2 synchronized (_jspx_page_con
22、text) 3 person = (gacl.javabean.study.Person) _jspx_page_context.getAttribute(person, PageContext.PAGE_SCOPE);4 if (person = null)5 person = new gacl.javabean.study.Person();6 _jspx_page_context.setAttribute(person, person, PageContext.PAGE_SCOPE);7 8 復(fù)制代碼下面我們來分析一下上述生成的代碼:首先是定義一個person對象,值是nullgacl.
23、javabean.study.Person person = null;/定義一個空的person對象然后是使用pageContext對象的getAttribute方法獲取存儲在PageContext.PAGE_SCOPE域中的Person對象person = (gacl.javabean.study.Person) _jspx_page_context.getAttribute(person, PageContext.PAGE_SCOPE);如果在PageContext.PAGE_SCOPE域中的Person對象沒有找到person對象,那么就創(chuàng)建一個新的person對象,然后使用pageC
24、ontext對象的setAttribute方法將新創(chuàng)建的person存儲在PageContext.PAGE_SCOPE域中if (person = null) person = new gacl.javabean.study.Person(); _jspx_page_context.setAttribute(person, person, PageContext.PAGE_SCOPE);也就是說,在index.jsp中使用來實例化person對象的過程實際上是執(zhí)行了上述的java代碼來實例化Person對象。這就是標簽的執(zhí)行原理:首先在指定的域范圍內(nèi)查找指定名稱的JavaBean對象,如果存在
25、則直接返回該JavaBean對象的引用,如果不存在則實例化一個新的JavaBean對象并將它以指定的名稱存儲到指定的域范圍中。3.3、帶標簽體的標簽語法: Body 功能: Body部分的內(nèi)容只在標簽創(chuàng)建JavaBean的實例對象時才執(zhí)行。這種做法用得不多,了解一下即可3.4、標簽標簽用于設(shè)置和訪問JavaBean對象的屬性。 語法格式一:語法格式二:jsp:setProperty name=beanName property=propertyName value= /語法格式三:語法格式四:name屬性用于指定JavaBean對象的名稱。 property屬性用于指定JavaBean實例對象
26、的屬性名。value屬性用于指定JavaBean對象的某個屬性的值,value的值可以是字符串,也可以是表達式。為字符串時,該值會自動轉(zhuǎn)化為JavaBean屬性相應(yīng)的類型,如果value的值是一個表達式,那么該表達式的計算結(jié)果必須與所要設(shè)置的JavaBean屬性的類型一致。 param屬性用于將JavaBean實例對象的某個屬性值設(shè)置為一個請求參數(shù)值,該屬性值同樣會自動轉(zhuǎn)換成要設(shè)置的JavaBean屬性的類型。標簽使用范例1:使用jsp:setProperty標簽設(shè)置person對象的屬性值復(fù)制代碼 1 2 %- 3 在jsp中使用jsp:useBean標簽來實例化一個Java類的對象 4 5
27、 :表示在JSP中要使用JavaBean。 6 id:表示生成的實例化對象,凡是在標簽中看見了id,則肯定表示一個實例對象。 7 class:此對象對應(yīng)的包.類名稱 8 scope:此javaBean的保存范圍,四種范圍:page、request、session、application 9 -%10 11 12 17 18 19 20 21 %-22 birthday屬性是一個Date類型,這個屬于復(fù)合數(shù)據(jù)類型,因此無法將字符串自動轉(zhuǎn)換成Date ,用下面這種寫法是會報錯的23 24 -%25 jsp:setProperty property=birthday name=person valu
28、e=/26 27 28 29 jsp:setProperty標簽使用范例30 31 32 33 34 姓名:35 性別:36 年齡:37 已婚:38 出生日期:39 40 孤傲蒼狼只為成功找方法,不為失敗找借口!javaweb學(xué)習(xí)總結(jié)(二十)JavaBean總結(jié)一、什么是JavaBeanJavaBean是一個遵循特定寫法的Java類,它通常具有如下特點:這個Java類必須具有一個無參的構(gòu)造函數(shù)屬性必須私有化。私有化的屬性必須通過public類型的方法暴露給其它程序,并且方法的命名也必須遵守一定的命名規(guī)范。javaBean范例:復(fù)制代碼 1 package gacl.javabean.study
29、; 2 3 /* 4 * author gacl 5 * Person類就是一個最簡單的JavaBean 6 */ 7 public class Person 8 9 /-Person類封裝的私有屬性-10 / 姓名 String類型11 private String name;12 / 性別 String類型13 private String sex;14 / 年齡 int類型15 private int age;16 /是否已婚 boolean類型17 private boolean married;18 /-19 20 /-Person類的無參數(shù)構(gòu)造方法-21 /*22 * 無參數(shù)構(gòu)造方
30、法23 */24 public Person() 25 26 27 /-28 29 /-Person類對外提供的用于訪問私有屬性的public方法-30 public String getName() 31 return name;32 33 34 public void setName(String name) 35 = name;36 37 38 public String getSex() 39 return sex;40 41 42 public void setSex(String sex) 43 this.sex = sex;44 45 46 public in
31、t getAge() 47 return age;48 49 50 public void setAge(int age) 51 this.age = age;52 53 54 public boolean isMarried() 55 return married;56 57 58 public void setMarried(boolean married) 59 this.married = married;60 61 /-62 復(fù)制代碼JavaBean在J2EE開發(fā)中,通常用于封裝數(shù)據(jù),對于遵循以上寫法的JavaBean組件,其它程序可以通過反射技術(shù)實例化JavaBean對象,并且通過
32、反射那些遵守命名規(guī)范的方法,從而獲知JavaBean的屬性,進而調(diào)用其屬性保存數(shù)據(jù)。二、JavaBean的屬性JavaBean的屬性可以是任意類型,并且一個JavaBean可以有多個屬性。每個屬性通常都需要具有相應(yīng)的setter、 getter方法,setter方法稱為屬性修改器,getter方法稱為屬性訪問器。屬性修改器必須以小寫的set前綴開始,后跟屬性名,且屬性名的第一個字母要改為大寫,例如,name屬性的修改器名稱為setName,password屬性的修改器名稱為setPassword。 屬性訪問器通常以小寫的get前綴開始,后跟屬性名,且屬性名的第一個字母也要改為大寫,例如,nam
33、e屬性的訪問器名稱為getName,password屬性的訪問器名稱為getPassword。 一個JavaBean的某個屬性也可以只有set方法或get方法,這樣的屬性通常也稱之為只寫、只讀屬性。三、在JSP中使用JavaBeanJSP技術(shù)提供了三個關(guān)于JavaBean組件的動作元素,即JSP標簽,它們分別為:標簽:用于在JSP頁面中查找或?qū)嵗粋€JavaBean組件。標簽:用于在JSP頁面中設(shè)置一個JavaBean組件的屬性。標簽:用于在JSP頁面中獲取一個JavaBean組件的屬性。3.1、標簽標簽用于在指定的域范圍內(nèi)查找指定名稱的JavaBean對象,如果存在則直接返回該JavaBe
34、an對象的引用,如果不存在則實例化一個新的JavaBean對象并將它以指定的名稱存儲到指定的域范圍中。 常用語法: id屬性用于指定JavaBean實例對象的引用名稱和其存儲在域范圍中的名稱。class屬性用于指定JavaBean的完整類名(即必須帶有包名)。scope屬性用于指定JavaBean實例對象所存儲的域范圍,其取值只能是page、request、session和application等四個值中的一個,其默認值是page。標簽使用范例:復(fù)制代碼 1 2 %- 3 在jsp中使用jsp:useBean標簽來實例化一個Java類的對象 4 5 :表示在JSP中要使用JavaBean。 6
35、 id:表示生成的實例化對象,凡是在標簽中看見了id,則肯定表示一個實例對象。 7 class:此對象對應(yīng)的包.類名稱 8 scope:此javaBean的保存范圍,四種范圍:page、request、session、application 9 -%10 11 23 24 25 26 jsp:useBean標簽使用范例27 28 29 30 31 姓名:32 性別:33 年齡:34 已婚:35 36 復(fù)制代碼運行結(jié)果如下:3.2、執(zhí)行原理 上面我們在index.jsp中使用實例化了一個gacl.javabean.study.Person類的對象,那么這個peson對象是怎么實例化出來的呢?in
36、dex.jsp在執(zhí)行的過程中首先會翻譯成一個servlet,因此我們可以通過查看index.jsp頁面生成的servlet的java代碼來查看peson對象的實例化過程找到tomcat服務(wù)器下的workCatalinalocalhost項目名稱orgapachejsp這個目錄,就可以看到將index.jsp頁面翻譯成servlet的java源碼了,如下所示:使用文本編輯器打開index_jsp.java文件,在_jspService方法中可以看到person對象的創(chuàng)建過程,如下所示:復(fù)制代碼1 gacl.javabean.study.Person person = null;2 synchronized (_jspx_page_context) 3 person = (gacl.javabean.study.Person) _jspx_page_context.getAttribute(person, PageContext.PAGE_SCOPE);4 if (person = null)5 person = new gacl.javabean.study.Person();6 _jspx_page_context.setAttribute(person, p
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)習(xí)資料保安證試題及答案
- 綜合實踐保安證考試試題及答案
- 新能源汽車充電樁有哪些配件
- 發(fā)展有機蔬菜種植的前景分析
- 2025年保安證考試應(yīng)對技巧試題及答案
- 江蘇大學(xué)京江學(xué)院《公益慈善與政策創(chuàng)新》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅省酒泉市肅北蒙古族自治縣2025屆四年級數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- 消防安全知識試題及答案解析
- 贛州師范高等??茖W(xué)校《產(chǎn)能成本決策虛擬仿真實驗》2023-2024學(xué)年第二學(xué)期期末試卷
- 武威職業(yè)學(xué)院《陳設(shè)藝術(shù)設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版四年級上冊豎式計算200題及答案
- 2024年單招計算機試題題庫及答案
- 三廢環(huán)保管理培訓(xùn)
- XX藥業(yè)公司受試者日記卡
- 多組學(xué)數(shù)據(jù)的整合與分析
- 《中國菜名翻譯》課件
- 種子出入庫管理制度
- 小學(xué)安全教育《平安校園 拒絕欺凌》劉偉【省級】優(yōu)質(zhì)課
- 靜脈輸液的不良反應(yīng)及處理原則考核試題及答案
- 水利設(shè)施維護投標方案(技術(shù)標)
- 《建筑概論》期末考試試卷附答案
評論
0/150
提交評論