Java核心技術(shù)--接口與內(nèi)部類

6.1 接口implement

繼承接口,即履行“義務(wù)”

  • 接口中所有的方法自動屬于public蛋褥,在接口聲明中,不必提供關(guān)鍵字public
  • 接口中決不能含有實(shí)例域,也不能在接口中實(shí)現(xiàn)方法
    為了讓類實(shí)現(xiàn)一個接口蓝仲,通常需要下面兩個步驟:
  1. 將類聲明為實(shí)現(xiàn)給定的接口
  2. 對接口中的所有方法進(jìn)行定義
接口與抽象類

為什么要引入接口,抽象類不是已經(jīng)滿足接口的功能了嗎官疲?

因?yàn)槊總€類只能擴(kuò)展一個類袱结,Java不支持多類繼承,主要原因是多類繼承會讓語言本身變得非常復(fù)雜(如同C++)途凫,效率也會降低(如同Eiffel)垢夹。

實(shí)際上,接口可以提供多重繼承的大多數(shù)好處维费,同時還可以避免多重繼承的復(fù)雜性和低效性果元。

6.2 對象克隆

拷貝

Copy時,原始變量A與copy變量B引用同一個對象犀盟,B改變而晒,A也會相應(yīng)的改變 。

克隆
  • clone是Object類的一個protected方法且蓬,在用戶編寫的代碼中不能直接調(diào)用欣硼。
  • 默認(rèn)的clone方法是淺copy,數(shù)值或基本類沒有問題,對于子對象的引用诈胜,拷貝的結(jié)果會使得兩個域引用同一個對象豹障。
  • 所有數(shù)組類型均包含一個clone方法,public而不是protected

常常需要重新定義clone方法焦匈,對每個類需要做以下判斷:

  1. 默認(rèn)的clone方法是否滿足需求
  2. 默認(rèn)的clone方法是否能夠通過調(diào)用可變子對象的clone得到修補(bǔ)
  3. 是否不應(yīng)該使用clone

實(shí)際上血公,選項(xiàng)3是默認(rèn)的。如果選擇1或者2缓熟,類必須:

  1. 實(shí)現(xiàn)Cloneable接口( 是Java提供的幾種標(biāo)記接口之一累魔,標(biāo)記接口沒有方法)
  2. 實(shí)現(xiàn)public訪問修飾符重新定義的clone方法
Class Employee implements Cloneable
{
    // 即使默認(rèn)clone能夠滿足需求,也建議實(shí)現(xiàn)Cloneable接口
    public Employee clone() throws CloneNoSupportedException
    {
        // call Object clone()
        Employee cloned = (Employee) super.clone();
        // clone mutable fields
        cloned.hireDay = (Date) hireDay.clone();
        return cloned;
    }
}

6.3 接口與回調(diào)(callback)

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class TimerTest
{
    public static void main(String[] args)
    {
        ActionListener listener = new TimePrinter();
        Timer t = new Timer(1000, listener);
        t.start();

        JOptionPane.showMessageDialog(null, "quit program");
        System.exit(0);
    }
}

class TimePrinter implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        Date now = new Date();
        System.out.println("At the tone, the time is" + now);
        Toolkit.getDefaultToolkit().beep();
    }
}

6.4 內(nèi)部類

為什么要使用內(nèi)部類够滑?

  • 內(nèi)部類可以訪問該類定義所在的作用域中的數(shù)據(jù)垦写,包括私有數(shù)據(jù)
  • 內(nèi)部類可以對同一個包中其他類隱藏起來
  • 當(dāng)想定義一個回調(diào)函數(shù)且不想編寫大量的代碼時,使用匿名內(nèi)部類比較便捷
  • 只有內(nèi)部類可以是私有類彰触,常規(guī)類只具有包可見性梯投,或者共有可見性
局部內(nèi)部類

局部類不能用public或者private訪問修飾符進(jìn)行說明。它的作用域被限定在聲明在這個局部類的快中况毅。

由外部方法訪問final變量

局部類還有一個優(yōu)點(diǎn)分蓖,不僅能夠訪問包含它們的外部類,還可以訪問局部變量尔许,不過這些局部變量必須被聲明為final

public void start(int interval, final boolean beep)
{
class TimerPrinter implements ActionListener
    {
        public void actionPerformed(ActionEvent event)
        {
            Date now = new Date();
            System.out.println("At the time is " + now);
            if(beep) Toolkit.getDefaultToolkit().beep();
        }
    }
ActionListener listener = new TimerPrinter();
Timer t = new Timer(interval, listener);
t.start();
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末么鹤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子味廊,更是在濱河造成了極大的恐慌蒸甜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毡们,死亡現(xiàn)場離奇詭異迅皇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)衙熔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門登颓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人红氯,你說我怎么就攤上這事框咙。” “怎么了痢甘?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵喇嘱,是天一觀的道長。 經(jīng)常有香客問我塞栅,道長者铜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮作烟,結(jié)果婚禮上愉粤,老公的妹妹穿的比我還像新娘。我一直安慰自己拿撩,他們只是感情好衣厘,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著压恒,像睡著了一般影暴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上探赫,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天型宙,我揣著相機(jī)與錄音,去河邊找鬼期吓。 笑死早歇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讨勤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晨另,長吁一口氣:“原來是場噩夢啊……” “哼潭千!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起借尿,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刨晴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后路翻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狈癞,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年茂契,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡挟伙,死狀恐怖糙及,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厌小,我是刑警寧澤恢共,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站璧亚,受9級特大地震影響讨韭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一透硝、第九天 我趴在偏房一處隱蔽的房頂上張望吉嚣。 院中可真熱鬧,春花似錦蹬铺、人聲如沸尝哆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秋泄。三九已至,卻和暖如春规阀,著一層夾襖步出監(jiān)牢的瞬間恒序,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工谁撼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歧胁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓厉碟,卻偏偏與公主長得像喊巍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子箍鼓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 人間沒有永恒的風(fēng)景崭参,沒有永遠(yuǎn)的人,也不必悲觀款咖,畢竟生活不止眼前的茍且何暮,還有詩和遠(yuǎn)方。 生命的禪意不在一經(jīng)一卷中铐殃,而...
    萱亮閱讀 138評論 0 2
  • 愿 “面朝大海海洼,春暖花開" 大地用他的熱情創(chuàng)造了悲劇,也締造了奇跡 而我卻無能為力 上帝言道 讓他降生 于是一切...
    LAZ王閱讀 230評論 0 2
  • 靜聽葉落閱讀 162評論 1 0
  • 有一種自豪 被你比作翻不完的書 領(lǐng)你去觀未知的世界 有一種榮耀 今后將攜你紅色背包 陪我延續(xù)未完的篇章
    喪心病狂的吶喊閱讀 167評論 0 0