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

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

一、抽象類

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

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

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

1抽象類不能被實(shí)例化,實(shí)例化的工作應(yīng)該交由它的子類來(lái)完成,它只需要有一個(gè)引用即可。
2抽象方法必須由子類來(lái)進(jìn)行重寫。
3只要包含一個(gè)抽象方法的抽象類,該方法必須要定義成抽象類,不管是否 還包含有其他方法。
4抽象類中可以包含具體的方法,當(dāng)然也可以不包含抽象方法。
5子類中的抽象方法不能與父類的抽象方法同名。
6abstract不能與final并列修飾同一個(gè)類。
7abstract 不能與private、static、final或native并列修飾同一個(gè)方法。

二、接口

一、什么是接口:

Java接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(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),就需要不同的類,即電腦和鼠標(biāo)等。
下附例子代碼:
1、USB的接口:在USB接口中寫出提供電量、數(shù)據(jù)傳輸?shù)姆椒?;接口的定義需要用到interface關(guān)鍵字。

  public interface USB {

       public void powerUp();

       public void dataTransport();

   }

2、鼠標(biāo)類:通過(guò)實(shí)現(xiàn)USB這個(gè)接口,來(lái)實(shí)現(xiàn)USB這個(gè)接口,一個(gè)類想要實(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、鍵盤類:通過(guò)實(shí)現(xiàn)USB這個(gè)接口,來(lái)實(shí)現(xiàn)USB這個(gè)接口,一個(gè)類想要實(shí)現(xiàn)接口需要用到implements關(guān)鍵字。

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

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

4、電腦類:在類中定義一個(gè)USB對(duì)象,寫出其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)鍵盤、鼠標(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)和鍵盤類中的功能。

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容