日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

201521123113 《Java程序设计》第5周学习总结

發(fā)布時(shí)間:2025/3/21 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 201521123113 《Java程序设计》第5周学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 本周學(xué)習(xí)總結(jié)

1.1 嘗試使用思維導(dǎo)圖總結(jié)有關(guān)多態(tài)與接口的知識點(diǎn)。

1.2 可選:使用常規(guī)方法總結(jié)其他上課內(nèi)容。

-繼承設(shè)計(jì)的技巧

1.將公共操作和屬性放在父類 2.不要使用protected修飾屬性 3.使用繼承實(shí)現(xiàn)"is-a"關(guān)系 4.除非所有繼承的方法都有意義,否則不要使用繼承。 5.在覆蓋方法時(shí),不要改變預(yù)期的行為。 6.使用多態(tài),而非類型信息。 7.不要過多地使用反射。 8.使用abstract方法修飾可能變化的方法。
  • 接口的語法特性:1.接口不是類,不能使用new進(jìn)行實(shí)例化;2.使用instanceof運(yùn)算符;3.接口可以擴(kuò)展。

    2. 書面作業(yè)

    Q1.代碼閱讀:Child壓縮包內(nèi)源代碼

    1.1 com.parent包中Child.java文件能否編譯通過?哪句會出現(xiàn)錯(cuò)誤?試改正該錯(cuò)誤。并分析輸出結(jié)果。

  • 不能編譯通過。出錯(cuò)代碼是System.out.println(i);因?yàn)閕在Parent類中是private,在Parent外部不能被訪問。可以由下圖的提示,把i改成protected,這樣就能讓子類可以直接訪問父類的成員。

    輸出結(jié)果分析:

public class Child extends Parent{public static void main(String[] args){Parent p = new Parent();Child c = new Child();c.getParenti();//Child繼承了父類Parent,這里輸出的是父類的i,為1c.getParentj();//同上,輸出的是父類的j,為2Other.showParentj(p);//由Parent.java和Other.java可知此句分別輸出的是父類的j和i,為2,1}public void getParenti(){System.out.println(i);//輸出 1}public void getParentj(){System.out.println(super.j);//輸出2System.out.println(j);//輸出2System.out.println(geti());//輸出1System.out.println(super.geti());//輸出1} }class Other{public static void showParentj(Parent p){System.out.println(p.j);//輸出2System.out.println(p.geti());//輸出1}}

1.2 另外一個(gè)包中的OutOfParentPackage.java,能否編譯通過?提示什么錯(cuò)誤?分析原因。如何更改才能使之正常編譯?(寫不出來正確答案不要緊,但請一定寫出思考過程)

  • 不能通過編譯。提示下圖所示錯(cuò)誤,parent類The type Parent is not visible錯(cuò)誤,parent只能在包parent類被訪問,根據(jù)如圖的提示,可以把parent改成public class,還有parent類中的i和j是用protected修飾,也是只能在本包和所有子類內(nèi)被訪問。可以吧protected改成public,對所有類都可見,就能正常編譯了。

1.3 回答:如果為了訪問到protected修飾的屬性或方法應(yīng)該怎么辦?

  • 可以讓OutOfParentPackage類繼承parent類,然后把parent類里的

    Q2.abstract進(jìn)階:閱讀GuessGame抽象類的設(shè)計(jì)與使用源代碼

    2.1 Guess改造前代碼很簡單,而改造后的代碼使用了抽象類、抽象方法看起來很復(fù)雜,那這樣的改造到底有什么好處呢?

    改造前:

package cc.openhome;import java.util.Scanner;public class Guess {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int number = (int) (Math.random() * 10);int guess;do {System.out.print("猜數(shù)字(0 ~ 9):");guess = scanner.nextInt();} while(guess != number);System.out.println("猜中了...XD");} }

改造后:

package cc.openhome;public abstract class GuessGame {public void go() {int number = (int) (Math.random() * 10); int guess;do {print("輸入數(shù)字:");guess = nextInt();} while(guess != number);println("猜中了");}public abstract void print(String text);public abstract void println(String text);public abstract int nextInt(); }
  • 改造前未使用抽象類,只能在控制臺輸出;改造后把GuessGame改成抽象類,可以在控制臺、對話框、圖形界面等輸出。
  • 因?yàn)橛袝r(shí)候我們不能確定別人的要求是什么,但是等要求下來再寫未免太浪費(fèi)時(shí)間,因此我們可以先寫抽象類函數(shù),等要求出來后再寫其他類繼承自此抽象類。

    2.2 如果想將該游戲改造成圖形界面,應(yīng)該進(jìn)行一些什么操作?

  • 寫一個(gè)圖形界面的類繼承GuessGame類。

    2.3 結(jié)合該例子,你覺得什么時(shí)候應(yīng)該使用abstract?

  • 當(dāng)你只知道類,不知道具體方法時(shí),要用到抽象類。上例中就是不知道要在那個(gè)平臺執(zhí)行該程序,所以就把GuessGame定義成抽象類,只有聲明沒有實(shí)例。

    2.4 重要:在這個(gè)例子中,變化的是什么,不變的是什么?嘗試結(jié)合abstract、繼承等概念進(jìn)行說明。

  • 在這個(gè)例子中,變化的是執(zhí)行平臺,不變的是GuessGame里的抽象方法。GuessGame類里的抽象方法沒有具體的定義,需要根據(jù)具體要求寫一個(gè)外部的類、方法繼承這個(gè)抽象類。

import java.util.Scanner;public class ConsoleGame extends GuessGame {private Scanner scanner = new Scanner(System.in);@Overridepublic void print(String text) {System.out.print(text);}@Overridepublic void println(String text) {System.out.println(text);}@Overridepublic int nextInt() {return scanner.nextInt();} }public class Guess {public static void main(String[] args) {GuessGame game = new ConsoleGame();//這邊使用了抽象類GuessGamegame.go();} }
  • 由此代碼可以看,ConsoleGame類繼承了抽象類GuessGame,對抽象類里的抽象方法重新定義,在主函數(shù)中創(chuàng)建對象game,使用了抽象類GuessGame。

    Q3.Comparable與Comparator

    3.1 描述Comparable接口的用途。為什么某個(gè)類實(shí)現(xiàn)了Comparable接口就可以直接使用Arrays.sort對其進(jìn)行排序?

  • Comparable接口對實(shí)現(xiàn)它的每個(gè)類的對象進(jìn)行排序,實(shí)現(xiàn)此接口的對象列表和數(shù)組可以通過 Collections.sort和Arrays.sort進(jìn)行排序。
  • 由jdk查詢Arrays.sort方法可知,實(shí)現(xiàn)Arrays.sort的前提就是要實(shí)現(xiàn)Comparable接口。

3.2 有了Comparable接口為什么還需要Comparator接口呢?

  • 當(dāng)比較對象不支持比較或者函數(shù)不能滿足要求時(shí),就要用到Comparator接口,可以自行寫比較方法。

    Q4.面向接口案例分析

    4.1 畫出類關(guān)系圖,描述每個(gè)類與接口的作用。

4.2 StudenDaoListImpl與StudentDaoArrayImpl有何區(qū)別?

  • StudenDaoListImpl和StudentDaoArrayImpl分別使用ArrayList和數(shù)組不同方法實(shí)現(xiàn)對StudentDao接口內(nèi)方法的操作。

Q5.什么是面向接口編程?面向接口編程的好處是什么?

結(jié)合題目3與4(Test.java的代碼)討論分析。不要百度原封不動照搬!
  • 代碼與接口相關(guān)聯(lián)的(比如Comparable接口),而不需要考慮具體的實(shí)現(xiàn)類。在面向?qū)ο蟮南到y(tǒng)里,不同對象方法解決不同問題。各個(gè)類有相同的方法,交互,我們面向這些交互來設(shè)計(jì)接口,就是面向接口編程。
  • 好處:可以使代碼邏輯清晰,代碼易懂,方便擴(kuò)展,可維護(hù)性強(qiáng);
    接口類似函數(shù),我們只要把函數(shù)寫好,不用管是誰要用,這樣做能提高效率,后面根據(jù)具體要求implements這個(gè)接口就好了。
  • 題目3中的Comparable和Comparator兩個(gè)接口,可以對所有類進(jìn)行比較排序。
    題目4中的StudentDao接口,test中可以用兩種方法實(shí)現(xiàn)StudentDao接口。

Q6.結(jié)對編程:面向?qū)ο笤O(shè)計(jì)(大作業(yè)2-非常重要)

內(nèi)容:使用Java代碼完成上周做的面向?qū)ο笤O(shè)計(jì)大作業(yè),需要有初步界面。實(shí)現(xiàn)的功能盡量簡單,少而精,只包含必要的功能,不要追求高大全。
寫出:類圖(盡量精簡,不用太多子類)、系統(tǒng)常用功能描述、關(guān)鍵代碼與界面
形式: 兩人依托碼云合作完成。請?jiān)谶@里貼出你們的學(xué)號、姓名與任務(wù)分工。
注意: 再過幾次課要講Java圖形界面編程,到時(shí)候要將該系統(tǒng)升級為圖形界面。系統(tǒng)的業(yè)務(wù)邏輯部分應(yīng)該變化不大,變化大的是輸入與輸出部分。所以編碼的時(shí)候,輸入(Scanner)與輸出(System.out)的代碼,請不要將其與某個(gè)業(yè)務(wù)處理函數(shù)綁死。
選做加分: 給出兩人在碼云上同一項(xiàng)目的提交記錄截圖,額外加分。注:兩個(gè)人在碼云上新建一個(gè)項(xiàng)目。
結(jié)對編程參考資料

3. 碼云上代碼提交記錄及PTA實(shí)驗(yàn)總結(jié)

題目集:jmu-Java-04-面向?qū)ο?-進(jìn)階-多態(tài)接口內(nèi)部類

3.1. 碼云代碼提交記錄

在碼云的項(xiàng)目中,依次選擇“統(tǒng)計(jì)-Commits歷史-設(shè)置時(shí)間段”, 然后搜索并截圖

3.2. PTA實(shí)驗(yàn)實(shí)驗(yàn)總結(jié)

-5-1:接觸了接口的代碼,學(xué)了Comparable接口的用法。
-5-2:

public int compare(PersonSortable2 p1,PersonSortable2 p2){return p1.getAge()-p2.getAge();//升序,如果反著減則是降序} }

轉(zhuǎn)載于:https://www.cnblogs.com/leexd/p/6591806.html

總結(jié)

以上是生活随笔為你收集整理的201521123113 《Java程序设计》第5周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。