抽象類和接口

抽象類

// 抽象類
public abstract class Uncle {
    private String name ;
    private int age ;
//抽象方法
    public abstract void faHongbao();


}

子類一 :

   public class UncleOne {
    public void faHongbao(){  
      System.out.println("大舅發(fā)紅包");
  }
}

子類二 :

   public class UncleTwo {
    public void faHomgbao (){
   System.out.println("二舅發(fā)紅包,還送樓盤");
  }
}

關(guān)鍵點(diǎn): 語(yǔ)法 : 1 抽象類的前面需要abstract 關(guān)鍵聲明
2 抽象類中至少有一個(gè)抽象方法
3 c抽象方法需要abstract關(guān)鍵字修飾
子類必須要實(shí)現(xiàn)抽象類中的抽象方法

public interface Uncle {
    // 在接口中聲明方法
    public void faHongbao() ;

}

子類一 :

implements父類的名字
public class UncleOne  implements  Uncle {
    public void faHongbao (){
        System.out.println("大舅發(fā)紅包,送煙");
   }
}

子類二 :

public class UncleTow implements  Uncle {
    public  void faHongbao(){
        System.out.println("二舅發(fā)紅包,送酒");
    }
}

接口 interface

1關(guān)鍵字 interface
2 接口中的方法需要聲明 ,不能有方法體 ,方法只能是公有的
3 子類需要實(shí)現(xiàn)接口中的所有方法,實(shí)現(xiàn)的語(yǔ)法是 implement接口名
例外:
1 可以寫(xiě)公有的常量
2 可以寫(xiě)默認(rèn)的方法 default修飾

public interface Uncle {
// 公有的常量
public String  chenghu = "舅舅";

// 在接口中聲明方法
public void faHongbao() ;

// 不管那個(gè)舅舅都需要照顧老人 為了避免重復(fù),寫(xiě)在接口中,default
public  default void zhanggulaoren(){
    System.out.println("每個(gè)舅舅都需要照顧老人");
 }
}

多實(shí)現(xiàn) (多重實(shí)現(xiàn))

/ 多繼承( 多重繼承 ) 多實(shí)現(xiàn) (多重實(shí)現(xiàn))

public class UncleTow implements  Uncle , Father,GrandFather {
    public  void faHongbao(){
        System.out.println("二舅發(fā)紅包,送酒");
        System.out.println(chenhu);
    }

public  void yangjia(){
    System.out.println("二舅也是一位父親,需要養(yǎng)家");
 }
}

多繼承(多重繼承)

只有接口才可以多重實(shí)現(xiàn),類只可以繼承一個(gè)父親

// 多(重)繼承 Temp extends  Uncle , Father ,GrandFather
public interface Temp extends  Uncle , Father ,GrandFather {
}public class UncleThree implements Temp {
    @Override
    public void yangjia(){
}

@Override
public void faHongbao() {

}
@Override
public void zhaogulaoren(){

}

抽象類與接口的對(duì)比
案例:

/爺爺類 抽象的 有一個(gè)釣魚(yú)的抽象方法沒(méi)有實(shí)現(xiàn)
public abstract class Yeye {
    public abstract void diaoyu();
}
//爸爸類 也是抽象的 從爺爺繼承來(lái)的抽象方法可以不實(shí)現(xiàn),也可以實(shí)現(xiàn)
public abstract class Baba extends Yeye  {
    public abstract void tangto();
}
// 叔叔類 標(biāo)準(zhǔn)的實(shí)體類 不是抽象類 繼承的父類中所有的抽象方法必須全部實(shí)現(xiàn)
public class Shushu extends Yeye {
    @Override
    public void diaoyu() {
        System.out.println("靠譜的叔叔替爺爺完成了釣魚(yú)");
    }
}
/孫子類 標(biāo)準(zhǔn)實(shí)體類不是抽象類 , 需要實(shí)現(xiàn)全部父類中累計(jì)沒(méi)有實(shí)現(xiàn)的所有抽象方法
public class Sunzi  extends Baba {
    @Override
    public void tangtou() {
        System.out.println("替爸爸完成燙頭");
    }

    @Override
    public void diaoyu() {
        System.out.println("替爺爺完成釣魚(yú)");

    }
}
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 前言:不知不覺(jué),Java基礎(chǔ)知識(shí)我們就要學(xué)習(xí)抽象類與接口了,簡(jiǎn)單來(lái)說(shuō),概念上的東西不難,但是用處很大,靈活運(yùn)用比較...
    古拉啦啦閱讀 304評(píng)論 0 3
  • 一、抽象類 抽象類是以修飾符abstract修飾的類,有點(diǎn)類似“模板”的作用,其目的是根據(jù)它的格式來(lái)創(chuàng)建和修改新的...
    安8閱讀 195評(píng)論 0 1
  • 抽象類: (1)不能被實(shí)例化; (2)抽象方法只能聲明于抽象類中,且不能有實(shí)現(xiàn),有抽象方法的必定為抽象類; (3)...
  • 重點(diǎn):執(zhí)行同一套邏輯但是調(diào)用的是不同方法就用抽象類或者接口,大多數(shù)時(shí)候用抽象類更加合適!抽象類表示的是,這個(gè)對(duì)象是...
    ray_stronger閱讀 135評(píng)論 0 0
  • (1) 抽象基類可以定義字段、屬性、方法實(shí)現(xiàn)。接口只能定義屬性、索引器、事件、和方法聲明,不能包含字段。 (2) ...
    殘非閱讀 219評(píng)論 0 0

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