備案的網(wǎng)站建設(shè)書是什么意思子域名在線查詢
目錄
- 一、什么是接口
- 二、接口的特點(diǎn)
- 三、接口和類的區(qū)別
- 四、接口和抽象類的區(qū)別
- 五、接口的聲明方式
- 六、default默認(rèn)方法
大家好,我是哪吒。
一、什么是接口
Java接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。
Java中有一個(gè)Comparable接口,只包含一個(gè)compareTo方法,public int compareTo(T o);,只有方法定義,沒有具體的方法實(shí)現(xiàn),接受一個(gè)Object參數(shù),返回一個(gè)整數(shù)。
通過implements關(guān)鍵字去實(shí)現(xiàn)Comparable接口,并對(duì)compareTo方法進(jìn)行重寫,已實(shí)現(xiàn)自己的業(yè)務(wù)邏輯。
public class Test implements Comparable{@Overridepublic int compareTo(Object o) {return 0;}
}
二、接口的特點(diǎn)
- 接口中的每個(gè)方法都是隱式抽象的,接口中的方法會(huì)被隱式的指定為public abstract,接口中不用聲明public;
- 接口中可以含有變量,但是接口中的變量會(huì)被隱式的指定為public static final變量;
- 接口中的方法是不能在接口中實(shí)現(xiàn)的,只能由實(shí)現(xiàn)接口的類來實(shí)現(xiàn)接口中的方法;
三、接口和類的區(qū)別
- 接口不能實(shí)例化
- 接口沒有構(gòu)造方法
- 接口中所有的方法必須是抽象方法,java8之后可以使用default關(guān)鍵字修飾非抽象方法
- 接口不能包含成員變量,除了static和final變量
- 接口支持多實(shí)現(xiàn)
四、接口和抽象類的區(qū)別
- 抽象類中的方法可以有方法體,就是能實(shí)現(xiàn)方法的具體功能,但是接口中的方法不能有方法體
- 抽象類中的成員變量可以使各種類型的,而接口中的成員變量只能是public static final類型的。
- 接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類中可以有靜態(tài)代碼塊和靜態(tài)方法。
- 一個(gè)類只能繼承一個(gè)抽象類,而一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。
五、接口的聲明方式
public interface UserService {void study();void sleep();
}
public interface StudentService {void play();
}
public class StudentServiceImpl implements StudentService,UserService{@Overridepublic void play() {}@Overridepublic void study() {}@Overridepublic void sleep() {}
}
六、default默認(rèn)方法
通過default關(guān)鍵字修飾的方法就是默認(rèn)方法。
如果接口中有很多方法,實(shí)現(xiàn)它的類就需要重寫接口中的所有方法,不管是否需要用到。如果接口中的某個(gè)方法被default關(guān)鍵字修飾了,那么具體的實(shí)現(xiàn)類中可以不用實(shí)現(xiàn)方法。
public interface Person {void study();default void say() {System.out.println("Person say");}
}
public class Student implements Person {@Overridepublic void study() {System.out.println("Student study");}
}
如果Student需要實(shí)現(xiàn)兩個(gè)類,這兩個(gè)接口中都有用default修飾的say方法,那么student類必須重寫say方法了,否則就會(huì)報(bào)錯(cuò)。
🏆本文收錄于,49天精通Java從入門到就業(yè)。
全網(wǎng)最細(xì)Java零基礎(chǔ)手把手入門教程,系列課程包括:基礎(chǔ)篇、集合篇、Java8新特性、多線程、代碼實(shí)戰(zhàn),持續(xù)更新中(每周1-2篇),適合零基礎(chǔ)和進(jìn)階提升的同學(xué)。
🏆哪吒多年工作總結(jié):Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師。