抽象類
// 抽象類
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ú)");
}
}