Java基礎(chǔ)05 抽象類(lèi)和接口

首先來(lái)介紹一下基類(lèi)(超類(lèi))的概念:當(dāng)一個(gè)類(lèi)與另一個(gè)具有相同功能又不能直接集成的時(shí)候慷吊,需要抽取共同所屬關(guān)系,可以把他們抽取出來(lái)的作為一個(gè)基類(lèi)曹抬「绕浚基類(lèi)就是父類(lèi)。

一谤民、抽象類(lèi)

   public  abstract class Animal {
public  void  eated(){
    System.out.println("eat");
}
//抽象方法
      public abstract void  howl();
  }
一堰酿、什么是抽象類(lèi)为牍?

抽象類(lèi)凌那,即可以理解為不具體的類(lèi)块攒,沒(méi)有具體的信息來(lái)描述它趣避,比如上述代碼中的Animal類(lèi)住练,Animal是什么樣子的岭埠,我們是描述不出來(lái)的止喷,但是我們可以通過(guò)別的類(lèi)來(lái)進(jìn)行特定的描述技羔,比如貓等。同時(shí),人、手機(jī)等都是抽象類(lèi)檩赢。抽象類(lèi)用abstract關(guān)鍵字修飾,抽象類(lèi)可以作為一個(gè)基類(lèi)來(lái)使用。

二、使用抽象類(lèi)時(shí)的注意事項(xiàng):

1抽象類(lèi)不能被實(shí)例化赞季,實(shí)例化的工作應(yīng)該交由它的子類(lèi)來(lái)完成叨橱,它只需要有一個(gè)引用即可钢猛。
2抽象方法必須由子類(lèi)來(lái)進(jìn)行重寫(xiě)壶愤。
3只要包含一個(gè)抽象方法的抽象類(lèi)勃救,該方法必須要定義成抽象類(lèi)宵统,不管是否 還包含有其他方法。
4抽象類(lèi)中可以包含具體的方法疑枯,當(dāng)然也可以不包含抽象方法具钥。
5子類(lèi)中的抽象方法不能與父類(lèi)的抽象方法同名四啰。
6abstract不能與final并列修飾同一個(gè)類(lèi)垂寥。
7abstract 不能與private箍镜、static蚀狰、final或native并列修飾同一個(gè)方法。

二刹勃、接口

一次洼、什么是接口:

Java接口是一系列方法的聲明亥啦,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn)濒旦,因此這些方法可以在不同的地方被不同的類(lèi)實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)炎疆。

二、下面來(lái)舉一個(gè)例子:

提到接口苞慢,大家可能會(huì)想到USB接口,就用這個(gè)來(lái)舉例箩言,電腦可以通過(guò)USB接口來(lái)連接外接設(shè)備鸵赖,為外接設(shè)備提供電能,同時(shí)也能為電腦提供數(shù)據(jù)傳輸饼煞,即接口只有一些方法的特征卻沒(méi)有方法實(shí)現(xiàn)砖瞧,想要這些特征被實(shí)現(xiàn),就需要不同的類(lèi)薇搁,即電腦和鼠標(biāo)等。
下附例子代碼:
1、USB的接口:在USB接口中寫(xiě)出提供電量秉氧、數(shù)據(jù)傳輸?shù)姆椒ǎ唤涌诘亩x需要用到interface關(guān)鍵字蚤假。

  public interface USB {

       public void powerUp();

       public void dataTransport();

   }

2栏饮、鼠標(biāo)類(lèi):通過(guò)實(shí)現(xiàn)USB這個(gè)接口,來(lái)實(shí)現(xiàn)USB這個(gè)接口磷仰,一個(gè)類(lèi)想要實(shí)現(xiàn)接口需要用到implements關(guān)鍵字袍嬉。

   public class Mouse implements USB{
@Override
public void powerUp() {
    System.out.println("鼠標(biāo)供電");
}

@Override
public void dataTransport() {
    System.out.println("鼠標(biāo)數(shù)據(jù)接通");

     }
  }

3、鍵盤(pán)類(lèi):通過(guò)實(shí)現(xiàn)USB這個(gè)接口灶平,來(lái)實(shí)現(xiàn)USB這個(gè)接口伺通,一個(gè)類(lèi)想要實(shí)現(xiàn)接口需要用到implements關(guān)鍵字。

  public class Keyboard implements USB{
@Override
public void powerUp() {
    System.out.println("鍵盤(pán)供電");
}

@Override
public void dataTransport() {
    System.out.println("鍵盤(pán)數(shù)據(jù)接通");
}
  }

4逢享、電腦類(lèi):在類(lèi)中定義一個(gè)USB對(duì)象罐监,寫(xiě)出其set方法,用來(lái)實(shí)現(xiàn)USB的供電瞒爬,數(shù)據(jù)傳輸功能笑诅。

  public class Computer {
       private USB usb;

       public USB getUsb() {
           return usb;
       }

       public void setUsb(USB usb) {
           this.usb = usb;
            usb.powerUp();
           usb.dataTransport();
       }
  }   

5调缨、在Main中:new出Computer、Mouse吆你、Keyboard的對(duì)象,將mouse俊犯、keyboard作為參數(shù)set給computer妇多,來(lái)讓電腦實(shí)現(xiàn)鍵盤(pán)、鼠標(biāo)中的功能燕侠。

 public class Main {

     public static void main(String[] args) {
       // write your code here
           Computer computer = new Computer();
           Mouse mouse = new Mouse();
           computer.setUsb(mouse);
           Keyboard keyboard = new Keyboard();
          computer.setUsb(keyboard);
   }
 }

6者祖、運(yùn)行結(jié)果:通過(guò)運(yùn)行,發(fā)現(xiàn)實(shí)現(xiàn)了鼠標(biāo)和鍵盤(pán)類(lèi)中的功能绢彤。

屏幕快照 2017-03-03 下午8.46.42.png
三七问、關(guān)于接口的特點(diǎn)及注意事項(xiàng):

1、Java接口中的成員變量默認(rèn)都是public,static,final類(lèi)型的(都可省略),必須被顯示初始化,即接口中的成員變量為常量(大寫(xiě),單詞之間用”_”分隔)
2茫舶、Java接口中的方法默認(rèn)都是public,abstract類(lèi)型的(都可省略),沒(méi)有方法體,不能被實(shí)例化
3械巡、Java接口中只能包含public,static,final類(lèi)型的成員變量和public,abstract類(lèi)型的成員方法
4、接口中沒(méi)有構(gòu)造方法,不能被實(shí)例化
5饶氏、一個(gè)接口不能實(shí)現(xiàn)(implements)另一個(gè)接口,但它可以繼承多個(gè)其它的接口
6讥耗、Java接口必須通過(guò)類(lèi)來(lái)實(shí)現(xiàn)它的抽象方法
7、當(dāng)類(lèi)實(shí)現(xiàn)了某個(gè)Java接口時(shí),它必須實(shí)現(xiàn)接口中的所有抽象方法,否則這個(gè)類(lèi)必須聲明為抽象類(lèi)
8疹启、不允許創(chuàng)建接口的實(shí)例(實(shí)例化),但允許定義接口類(lèi)型的引用變量,該引用變量引用實(shí)現(xiàn)了這個(gè)接口的類(lèi)的實(shí)例
9古程、一個(gè)類(lèi)只能繼承一個(gè)直接的父類(lèi),但可以實(shí)現(xiàn)多個(gè)接口,間接的實(shí)現(xiàn)了多繼承,并且沒(méi)有菱形缺陷 相當(dāng)于多繼承的優(yōu)化案喊崖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挣磨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子荤懂,更是在濱河造成了極大的恐慌茁裙,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件势誊,死亡現(xiàn)場(chǎng)離奇詭異呜达,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粟耻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)查近,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人挤忙,你說(shuō)我怎么就攤上這事霜威。” “怎么了册烈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵戈泼,是天一觀的道長(zhǎng)婿禽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)大猛,這世上最難降的妖魔是什么扭倾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮挽绩,結(jié)果婚禮上膛壹,老公的妹妹穿的比我還像新娘。我一直安慰自己唉堪,他們只是感情好模聋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著唠亚,像睡著了一般链方。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灶搜,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天祟蚀,我揣著相機(jī)與錄音,去河邊找鬼占调。 笑死暂题,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的究珊。 我是一名探鬼主播薪者,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼剿涮!你這毒婦竟也來(lái)了言津?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤取试,失蹤者是張志新(化名)和其女友劉穎悬槽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體瞬浓,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡初婆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了猿棉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅叛。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖萨赁,靈堂內(nèi)的尸體忽然破棺而出弊琴,到底是詐尸還是另有隱情,我是刑警寧澤杖爽,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布敲董,位于F島的核電站紫皇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏腋寨。R本人自食惡果不足惜聪铺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望精置。 院中可真熱鬧计寇,春花似錦、人聲如沸脂倦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赖阻。三九已至,卻和暖如春踱蠢,著一層夾襖步出監(jiān)牢的瞬間火欧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工茎截, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苇侵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓企锌,卻偏偏與公主長(zhǎng)得像榆浓,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撕攒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法陡鹃,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法抖坪,繼承相關(guān)的語(yǔ)法萍鲸,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,602評(píng)論 18 399
  • 一:java概述:1擦俐,JDK:Java Development Kit脊阴,java的開(kāi)發(fā)和運(yùn)行環(huán)境,java的開(kāi)發(fā)工...
    ZaneInTheSun閱讀 2,635評(píng)論 0 11
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理蚯瞧,服務(wù)發(fā)現(xiàn)嘿期,斷路器,智...
    卡卡羅2017閱讀 134,638評(píng)論 18 139
  • 時(shí)間是由人控制的状知。有些人一生就是工作秽五。因?yàn)楣ぷ髁钏淇臁8魅诉x擇是不一樣的饥悴。唯獨(dú)時(shí)間里的愛(ài)情坦喘,無(wú)法控制盲再,阻擋不了感...
    一張幻想_閱讀 282評(píng)論 0 2
  • 【R圖秀】主要介紹如何用R來(lái)實(shí)現(xiàn)數(shù)據(jù)可視化。 用REmap繪制Rapper地圖 用R打造炫酷彩色二維碼 哪個(gè)國(guó)家最...
    Rapp閱讀 370評(píng)論 0 0