抽象類
public abstract class Uncle {
private String name;
private int age;
//抽象方法
public abstract void faHongbao();
}
子類一:
public class UncleOne extends Uncle {
public void faHongbao(){
System.out.println("打就發(fā)紅包邮辽,還送酒");
}
}
子類二:
public class UncleTwo extends Uncle {
public void faHongbao(){
System.out.println("二舅發(fā)紅包,還送煙");
}
}
關(guān)鍵點(diǎn):
語法:1 .抽象類的前邊需要adstract關(guān)鍵字聲明
2 .抽象類中至少有一個(gè)抽象方法
3 .抽象方法需要adstract關(guān)鍵字
接口interface
public interface Uncle {
//在接口中聲明方法
public void faHongbao();
}
子類一:implements
public class UncleOne implements Uncle {
@Override
public void faHongbao() {
System.out.println("大舅發(fā)紅包煌张,還送酒");
}
}
子類二:
public class UncleTwo implements Uncle {
@Override
public void faHongbao() {
System.out.println("二舅送紅包,松煙");
}
}
1.關(guān)鍵字interface
2.接口的方法只需要聲明梁钾,不能有方法體,方法只能是共有的
3.子類需要實(shí)現(xiàn)接口中的所有方法直砂,實(shí)現(xiàn)語法中的implements接口名
例外:
1.可以寫公有常量
2.可以寫默認(rèn)的方法 ,default修飾
public interface Uncle {
//共有的常量
public String chenghu = "舅舅";
//在接口中聲明方法
public void faHongbao();
//不管那個(gè)舅舅都需要照顧老人土童, 為了避免重復(fù)唯袄,可以寫在接口處弯屈,default
public default void zhaogulaoren(){
System.out.println("每個(gè)舅舅都需要照顧老人");
}
}
多實(shí)現(xiàn)(多重實(shí)現(xiàn))
// 多實(shí)現(xiàn)(多重實(shí)現(xiàn))
public class UncleTwo implements Uncle , Father, GrandFather {
@Override
public void faHongbao() {
System.out.println("二舅送紅包,松煙");
System.out.println(chenghu);
}
public void yangjia(){
System.out.println("二舅也是一位父親恋拷,也許要養(yǎng)家");
}
}
多繼承(多重繼承)只有一個(gè)接口才可以繼承多個(gè)接口(多重繼承)
//多(重) 繼承 extends Uncle 资厉,F(xiàn)ather ,GrandFather
public interface Temp extends Uncle ,Father, GrandFather{
}
public class UncleThree implements Temp {
@Override
public void yangjia() {
}
@Override
public void faHongbao() {
}
public void zhaogulaoren(){
}
}
抽象類與接口的對比
案例:
//爺爺類 抽象的 有一個(gè)釣魚的抽象類方法沒有實(shí)現(xiàn)
public abstract class YeYe {
public abstract void diaoyu();
}
//爸爸類 抽象的 從爺爺繼承來的抽象方法可以不實(shí)現(xiàn)蔬顾, 也可以實(shí)現(xiàn)
public abstract class BaBa extends YeYe {
public abstract void tangtou();
}
// 叔叔類 標(biāo)準(zhǔn)的實(shí)體類 不是抽象類 繼承的父類中所有的抽象方法必須全部實(shí)現(xiàn)
public class ShuShu extends YeYe {
@Override
public void diaoyu() {
}
}
//孫子類 標(biāo)準(zhǔn)實(shí)體類 宴偿, 需要實(shí)現(xiàn)全部類父類中累計(jì)沒有實(shí)現(xiàn)的抽象方法
public class Sunzi extends BaBa {
@Override
public void tangtou() {
}
@Override
public void diaoyu() {
}
}