Java中接口的知識彙總
一.為什麼要使用接口
假如有一個需求:要求實現防盜門的功能。門有"開"和"關"的功能,鎖有"上鎖"和"開鎖"的功能。
分析:首先防盜門是一個門,門有開門和關門的功能,還有一把鎖,鎖有開鎖和上鎖,按照面向對象的編程的思想,我們會將門和鎖都作為一個類而單獨存在,但是,不能讓防盜門繼承自門的同時又繼承自鎖,防盜門不是鎖,不符合繼承中is a的關係,在java中支持單繼承。那麼我們如何來解決這一問題,這時就要用到接口。
二.什麼是接口
在軟件中接口是一種規範和標準,他們可以約束類的行為,是一些方法特徵的集合,但是沒有方法的實現,接口其實上也可以看做是一個特殊的抽象類,但是採用和抽象類完全不同的'方法來表示,兩者的設計理念也是不同的,抽象類有利於代碼複用,接口利於代碼的擴展和維護。
三.抽象類和接口的區別:
01抽象類可以提供成員方法的實現細節,而接口中只能存在public abstract 方法;
02.抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型的;
03.接口中不能含有靜態代碼塊以及靜態方法,而抽象類可以有靜態代碼塊和靜態方法;
04.一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
四.如何定義接口
首先先來看一下語法:
[修飾符] interface 接口名 extends 父接口1,父接口2,...
{
//常量定義
//方法定義
}
在一個類中實現接口語法:
class 類名 父類名 implements 接口1,接口2,.....
{
//類成員
}
五.定義接口注意點
01.接口的命名規則與類相同,如果修飾符是public ,則該接口在整個項目中可見;如果省略修飾符,則該接口只在當前包中可見。
02.接口中可以定義常量,不能定義變量,如果你在接口中定義屬性,那麼通過反編譯可以看見他會自動用public static final 修飾,接口中的屬性都是全局靜態常量,接口中的常量必須在定義時指定初始值。
03.接口中所有的方法都是抽象方法,接口中方法都會自動用public abstract 修飾,即接口中只有全局抽象方法。
04.接口不能實例化,接口中不能有構造。
05接口之間可以通過extends實現繼承關係,一個接口可以繼承多個接口,但接口不能繼承類。
06.接口的實現類必須實現接口的全部方法,否則必須定義為抽象類。
-
Java 正則表達式
Java是一門編程語言,那麼大家知道Java正則表達式是怎樣的呢?下面一起來看看!Java正則表達式正則表達式定義了字符串的模式。正則表達式可以用來搜索、編輯或處理文本。正則表達式並不僅限於某一種語言,但是在每種語言中有細微的差別。正則表達式實例一個字符串其...
-
java語言的接口與繼承
Java是一個面向對象的語言。對程序員來説,這意味着要注意應中的數據和操縱數據的方法,而不是嚴格地用過程來思考。下面是小編分享的java語言的接口與繼承,一起來看一下吧。大多數人認為,接口的意義在於頂替多重繼承。眾所周知Java沒有c++那樣多重繼承的機制,但是卻...
-
如何實現javascript去除字符串裏中文與空格
導語:如何實現javascript去除字符串裏中文與空格呢?下面是小編給大家提供的示例代碼實現,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。1.去掉空格:functionmoveSpace(){varstr="abcdefg";alert(ace(/[]/g,""));}moveSpace();2.去掉中文:vartitle="字符串zifuc...
-
如何在Javascript中為String對象添加trim,ltrim,rtrim方法
如何在Javascript中為String對象添加trim,ltrim,rtrim方法呢?下面是小編給大家提供的實現代碼,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。利用Javascript中每個對象(Object)的prototype屬性我們可以為Javascript中的內置對象添加我們自己的方法和屬性。j...