1.1 面向對象學習暫告一段落,請使用思惟導圖,以封裝、繼承、多態爲核心概念畫一張思惟導圖,對面向對象思想進行一個總結。
java
Q1.clone方法
1.1 Object對象中的clone方法是被protected修飾,在自定義的類中覆蓋clone方法時須要注意什麼?編程
1.2 本身設計類時,通常對什麼樣的方法使用protected進行修飾?以做業Shape爲例說明。 app
1.3 在test1包中編寫簡單的Employee類,在test2包中新建一個TestProtected類,並在main中嘗試調用test1包中的Employee的clone方法克隆一個新對象,可否成功?爲何? eclipse
Q2.使用匿名類與Lambda表達式改寫題集面向對象2-進階-多態接口內部類的題目5-2僅需粘貼關鍵代碼與運行結果,圖片不要太大。ide
Arrays.sort(str, new Comparator<PersonSortable2>(){ public int compare(PersonSortable2 o1, PersonSortable2 o2) { return o1.getName().compareTo(o2.getName()); } }); Arrays.sort(str, new Comparator<PersonSortable2>(){ public int compare(PersonSortable2 o1, PersonSortable2 o2) { return Integer.toString(o1.getAge()).compareTo(Integer.toString(o2.getAge())); } });
Arrays.sort(str, (PersonSortable2 o1, PersonSortable2 o2) ->(o1.getName().compareTo(o2.getName()))); Arrays.sort(str, (PersonSortable2 o1, PersonSortable2 o2) -> (o1.getAge()-o2.getAge()));
Q3.分析下列代碼,回答shapeComparator所指向的對象與Comparator接口有什麼關係?函數
Comparator<Shape> shapeComparator = new Comparator<Shape>() { @Override public int compare(Shape o1, Shape o2) { //你的代碼 } };
Q4.GUI中的事件處理
4.1 寫出事件處理模型中最重要的幾個關鍵詞。學習
4.2 使用代碼與註釋,證實你理解了事件處理模型。設計
public class MainGUI { public static void main(String[] args) { JFrame f = new JFrame("Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JButton b = new JButton("Press Me!");//事件是點擊按鈕,事件源是按鈕 b.addActionListener(new ButtonHandler());//註冊監聽器,爲了可以讓事件監聽器檢查到某個組件(事件源(此處是按鈕))是否發生了某些事件,而且在發生事件時激活時間處理器進行相應的處理,必須註冊監聽器。 f.add(b); f.setSize(200, 100); f.setVisible(true); } private static class ButtonHandler implements ActionListener{//監聽器,不一樣類型的事件須要有不一樣的監聽器,監聽器必須實現監聽器接口,而後進行事件處理「Action occurred」 public void actionPerformed(ActionEvent e) { System.out.println("Action occurred"); System.out.println(e.getSource());//得到事件源 } } }
Q5.結對編程:面向對象設計(大做業2-很是重要,未完成-2)繼續完善上週的項目做業。考覈點以下:
5.1 嘗試使用圖形界面改寫。code
private void clothesComboBoxActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: if(0==(clothesComboBox.getSelectedIndex())){ jLabel.setText(clothes1.getName()); ... } if(1==(clothesComboBox.getSelectedIndex())){ jLabel.setText(clothes2.getName()); ... } ... } private void sumButtonActionPerformed(java.awt.event.ActionEvent evt) { count=Integer.parseInt(jTextField1.getText()); jTextArea1.setEditable(false); if(0==(clothesComboBox.getSelectedIndex())){ sum+=clothes1.getPrice()*count; jTextArea1.append("商品名:"+clothes1.getName()+"價格:"+clothes1.getPrice()+"購件數:"+count+"\n"); } if(1==(clothesComboBox.getSelectedIndex())){ ... } ... }
5.2 給出兩人在碼雲上同一項目的提交記錄截圖。
orm
5.3 與上週相比,項目的主要改動是什麼?