Re: [問題] 請問interface到底是做什麼用的?

看板java作者時間19年前 (2006/04/15 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串21/33 (看更多)
[...] (以下不負責任發言) ※Interface: .以精神來看: → 一群未實作的方法,用來描述一個類別應有的特性或功能 .以程設來看: → 一個類別內的方法成員全部都是abstract method,我們稱這個類別為interface ※舉例: .EventListener:java.util → 連一個方法都沒有的介面 → 擁有很多子介面:ActionListener, ChangeListener, MouseListener, etc. → 組織已存在的事件聽取類別,讓所有的事件聽取類別都實作這個介面 .Component:java.awt → 實作介面:ImageObserver, MenuContainer, Serializable .ImageObserver:有需求時,就以非同步方式更新指定畫面 .MenuContainer:所有和容器有關的選單都要實作此介面 .Serializable: → 一個可以序列地輸出至串流的標籤 → 若此類別的設計可以滿足Serializable,就實作此介面 → 本介面沒有任何欄位或方法 → 成員方法: .addMouseListener(MouseListener l): → 加入滑鼠事件聽取者 → MouseListener是一個介面:必須實作之,程式才能運作 ※Code: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class IntroduceInterface extends JFrame { // 宣告一個label,加入一個滑鼠事件傾聽者,告知滑鼠事件已被觸發 // Note: Component是一個abstract class Component label; public static void main(String[] args) { // 秀出視窗 new IntroduceInterface().setVisible(true); } public IntroduceInterface() { // 創建一個label,它的文字是Text // Note: Component是一個abstract class // 我們以JLabel來創建這個Component label = new JLabel("Text"); // 在label加入一個滑鼠事件傾聽者 // Note: addMouseListener的argument是一個interface // 我們以MouseAdaper的過載來實作這個interface label.addMouseListener(new MouseAdapter() { // 滑鼠點擊事件 public void mouseClicked(MouseEvent e) { // 印出訊息,告知使用者label被滑鼠點擊了 System.out.println("Label Clicked."); } } ); // 在主panel上加入這個label getContentPane().add(label); } } ※想說的話: .Component是一個未確定的類別,我們不能確實它是label, button, list, etc. 所以Component是一個abstract class,其內容由子類別實作。 .MouseListener是一個介面,我們不能先行實作滑鼠點擊, 滑鼠進入, etc 這些事件要觸發哪些動作由程式設計師實作其內容。 .EventListener是一個空無一物的介面,它的角色可能只在類別圖上扮演重要的角 色,對於java的設計藍圖或草稿上可能極有貢獻,但是對於使用java的程式設計師 而言,用處卻不大 (不過在開發軟體的時候,將多個相同概念的東西組織成一個介 面,會是一個好主意)。 .Serializable是一個空無一物的介面,它的功能雖然只是辨視一個類別是否可以被 正確輸出至串流或輸入至物件,但是卻在io上扮演著極重要的角色。 -- 珍惜現在擁有的一切 身外之物不一定能擁有一輩子... -- 〒作者:H45 來自:15-207.dorm.ncu.edu.tw ◎二進位的世界【140.115.50.50‧binary.csie.ncu.edu.tw】
文章代碼(AID): #14F-Dn00 (java)
討論串 (同標題文章)
文章代碼(AID): #14F-Dn00 (java)