1.1 面向對象學習暫告一段落,請使用思惟導圖,以封裝、繼承、多態爲核心概念畫一張思惟導圖,對面向對象思想進行一個總結。
注1:關鍵詞與內容不求多,但概念之間的聯繫要清晰,內容覆蓋面向對象的核心內容便可。
注2:顏色要少、連線不要複雜,必要的時候要在連線上進行說明。
java
1.2 可選:使用常規方法總結其餘上課內容。編程
Labmda表達式語法:參數 -> 表達式或程序塊{ },若是是表達式,則return該表達式的值(無需寫return語句),若是是程序塊{ },能夠包含多條語句。數組
Answer:由於protected對本包和全部子類可見。覆蓋clone方法1:聲明爲publi:;2:實現Cloneable接口
Answer:protected對本包和全部子類可見,因此若是有些類只想讓本包和子類訪問的話就用protected修飾。getArea就是繼承shape的,用protected修飾。
Answer:這個很顯然是不能成功的,由於Employ類和TestProtected類不是在同一個包中,也沒有繼承關係,因此不能成功。能夠在test2包里加上import test1.Employee或者讓TestProtected繼承Employee類。
僅需粘貼關鍵代碼與運行結果,圖片不要太大。
題目:
代碼:ide
import java.util.*; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); ArrayList<PersonSortable2> person=new ArrayList<PersonSortable2>(); for(int i=0;i<n;i++){ person.add(new PersonSortable2(in.next(),in.nextInt())); } Collections.sort(person,new NameComparator()); System.out.println("NameComparator:sort"); for(int i=0;i<person.size();i++){ System.out.println(person.get(i)); } Collections.sort(person,new AgeComparator()); System.out.println("AgeComparator:sort"); for(int i=0;i<person.size();i++){ System.out.println(person.get(i)); } System.out.println(Arrays.toString(NameComparator.class.getInterfaces())); System.out.println(Arrays.toString(AgeComparator.class.getInterfaces())); } } class PersonSortable2{ private String name; private int age; public PersonSortable2(String name, int age){ this.name = name; this.age = age; } public String toString(){ return this.name+'-'+this.age; } public String getName(){ return name; } public int getAge(){ return age; } } class NameComparator implements Comparator<PersonSortable2>{ @Override public int compare(PersonSortable2 p1,PersonSortable2 p2){ return p1.getName().compareTo(p2.getName()); } } class AgeComparator implements Comparator<PersonSortable2> { @Override public int compare(PersonSortable2 p1,PersonSortable2 p2){ return p1.getAge()-p2.getAge(); } }
改寫後函數
Comparator<PersonSortable1> NameComparator = new Comparator<PersonSortable1>(){ public int compare(PersonSortable1 o1, PersonSortable1 o2) { if (o1 == o2) return 0; return o1.getName().compareTo(o2.getName()); } }; Comparator<PersonSortable1> AgeComparator = new Comparator<PersonSortable1>(){ public int compare(PersonSortable1 o1, PersonSortable1 o2) { if (o1 == o2) return 0; return o1.getAge()-o2.getAge(); } };
Lambda表達式:學習
Comparator<PersonSortable2> NameComparator=(o1,o2)-> o1.getName().compareTo(o2.getName()); Comparator<PersonSortable2> AgeComparator=(o1,o2)-> o1.getAge()-o2.getAge();
運行結果截圖:
this
3.分析下列代碼,回答shapeComparator所指向的對象與Comparator接口有什麼關係?設計
Comparator<Shape> shapeComparator = new Comparator<Shape>() { @Override public int compare(Shape o1, Shape o2) { //你的代碼 } };
Answer:shapeComparator這個對象操做了Comparator這個接口也就是說shapeComparator實現了Comparator接口。
4.GUI中的事件處理
4.1 寫出事件處理模型中最重要的幾個關鍵詞。
Answer:
(1)事件源:任何支持GUI的操做,如敲擊鍵盤或點擊鼠標這樣的事件;
(2)事件對象:可以產生事件的GUI組件對象;
(3)事件監聽器:根據某種類型的事件XXXEvent,定義對應的事件監聽器類,該類須要實現針對特定事件的特定接口XXXListener;
(4)事件適配器:當須要對某種事件進行處理時,只需讓事件處理類繼承事件所對應的適配器類,只重寫須要關注的方法便可,而無關的方法就沒必要實現了。
4.2 使用代碼與註釋,證實你理解了事件處理模型。
使用NetBeans,建立一個JFrame上有一個JButton
事件: ActionEvent
事件源:javax.swing.JButton
事件監聽器:3d
jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });
5.結對編程:面向對象設計(大做業2-很是重要,未完成-2)
繼續完善上週的項目做業。考覈點以下:
5.1 嘗試使用圖形界面改寫。
5.2 給出兩人在碼雲上同一項目的提交記錄截圖。
5.3 與上週相比,項目的主要改動是什麼?
絞盡腦汁仍是不太會寫,最終在friend的幫助下弄了這些,新的軟件還不太熟悉,最近忙瘋了,事情太多了,整我的都有點難受,Java的代碼都不太會。
感受就是加了圖形界面的改寫,輸入輸出的改動吧。code
函數(選作:4-1)、編程(5-3, 5-4)
必定要有實驗總結
5-3的編程沒有理解好題目的意思,一直覺得輸入格式是一塊兒的,後來發現,原來能夠先輸入一部分,而後打印出來,再輸入繼續操做~害我糾結了很久都不知道該怎麼辦。。還有就是空行沒有清掉,這是由於本身自做聰明加了換行符。- -。還有就是定義IntegerStack的實現類ArrayIntegerStack,內部使用數組實現,建立時,可指定內部數組大小這裏編寫實現類的時候不太懂,一直沒作出來,很難受!一步步慢慢來吧!這兩週事情比較多,都快忙死了,博客作得不太好~下次好好改進* 。*!