JAVA中interface接口的使用
提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、interface是什么?
- 二、關(guān)于interface的使用
- 1.接口的格式
- 代碼例子1
- 2.用登錄方法具體實(shí)現(xiàn)
- 代碼例子2:
- 抽象類(lèi)和接口之間的區(qū)別
- 總結(jié)
前言
隨著面向?qū)ο笏枷氲陌l(fā)展,類(lèi)的使用越來(lái)越方便,但是有時(shí)候類(lèi)卻不能實(shí)現(xiàn)對(duì)于方法的抽象,只能對(duì)于自己的屬性的抽象。(所謂抽象簡(jiǎn)單理解為沒(méi)有具體的實(shí)現(xiàn))于是我們便在java語(yǔ)言中引出了一種接口的方式(interface)。(以下內(nèi)容基于JAVA語(yǔ)言)
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、interface是什么?
interface是一種接口的方式和抽象類(lèi)很相似,并且接口可以實(shí)現(xiàn)多接口,但是在JAVA語(yǔ)言中類(lèi)的繼承不能多繼承。interface是一種基于方法進(jìn)行分類(lèi)的,其主要目的是為了彌補(bǔ)類(lèi)相對(duì)于方法的抽象。
用一個(gè)生動(dòng)的例子來(lái)表示就是:
對(duì)于不同的動(dòng)物都有吃的動(dòng)作,但是一般的植物就沒(méi)有吃的動(dòng)作,有一些特殊的植物也有吃的動(dòng)作。但是對(duì)于植物就不能把吃的動(dòng)作寫(xiě)上去了,只有在寫(xiě)食人花之類(lèi)的時(shí)候,把吃的動(dòng)作補(bǔ)充就去也就是implements.這里當(dāng)然也就需要我們的interface能完成了。
二、關(guān)于interface的使用
關(guān)于接口的使用我們這里使用一個(gè)登錄的例子進(jìn)行操作,關(guān)于不同的登錄,實(shí)現(xiàn)登錄不同,(比如手機(jī)短信登錄,密碼登錄,以及掃碼登錄等等)所以我們?cè)趯?shí)現(xiàn)登錄操作的時(shí)候就有了很多種方法。關(guān)于不同的方法的實(shí)現(xiàn)就可以implement一個(gè)interface
1.接口的格式
定義接口:
【public】interface 接口名【extends 父接口名】{}
實(shí)現(xiàn)接口:
【修飾符】class 類(lèi)名 implements 接口名{}
代碼例子1
//剛剛新建一個(gè)包,查閱資料發(fā)現(xiàn)包的創(chuàng)建不能出現(xiàn)關(guān)鍵詞,下劃線,空格 interface login_interface { public void login(userlogin user,String code);//接口只能定義方法不能實(shí)現(xiàn) } //以下的三個(gè)類(lèi)都是對(duì)于這個(gè)抽象類(lèi)的實(shí)現(xiàn) class PwdLogin implements login_interface{@Overridepublic void login(userlogin user, String code) {//在接口的繼承里面必須要把全部的方法都實(shí)現(xiàn)了System.out.println("pwd login");if(user.pwd.equals(code)){System.out.println("登錄成功!!");}elseSystem.out.println("密碼錯(cuò)誤");} }class PhoneMsglogin implements login_interface{@Overridepublic void login(userlogin user, String code) {System.out.println("phone login");if(user.pwd.equals(code)) System.out.println("登錄成功!!");else System.out.println("密碼錯(cuò)誤!");} }class codelogin implements login_interface{@Overridepublic void login(userlogin user, String code) {System.out.println("code login");if(user.pwd.equals(code)){System.out.println("登錄成功!!");}else System.out.println("密碼錯(cuò)誤!");} }2.用登錄方法具體實(shí)現(xiàn)
在上面我們創(chuàng)建了三個(gè)具體的類(lèi)去實(shí)現(xiàn)這個(gè)接口,但是沒(méi)有體現(xiàn)出他們的具體作用,這里我們創(chuàng)建出一個(gè)用戶分別使用不同的方法進(jìn)行登錄隨后就會(huì)有不同的操作進(jìn)行,可以直接體現(xiàn)interface的作用
代碼例子2:
public class userlogin {// 屬性String name;int age;String pwd;/**// 登錄方法(如果只有一種登錄方法可以直接不用繼承該接口的方法就行)public void login(String pwd){if(pwd.equals (this.pwd)){System.out.println("登錄成功");}else {System.out.println("登錄失敗");}}**/// 接口聲明的 屬性對(duì)象名 不能直接實(shí)例化login_interface loginService;//這不是實(shí)例化,就像是一個(gè)指針指向這個(gè)類(lèi)的對(duì)象public void loginServiceLogin(String code){loginService.login(this,code);}class Manage{public static void main(String[] args){userlogin user = new userlogin();user.name = "張三";user.age = 18;user.pwd = "123456";// 配置 登錄方式PhoneMsgLogin phlogin=new PhoneMsgLogin();codelogin clogin=new codelogin();PwdLogin pwdLogin = new PwdLogin();user.loginService=pwdLogin;// CodeLogin codeLogin = new CodeLogin(); // user.loginService=codeLogin;user.loginServiceLogin ("123456");user.loginService=clogin;user.loginServiceLogin("123456");user.loginService=phlogin;user.loginServiceLogin("123456");//直接調(diào)用一種方法實(shí)現(xiàn)三種不用的方法的使用,這個(gè)是實(shí)現(xiàn)了程序的多態(tài)性}}抽象類(lèi)和接口之間的區(qū)別
實(shí)際點(diǎn)來(lái)說(shuō),一個(gè)抽象類(lèi)不能實(shí)例化,因?yàn)椤皼](méi)有包含足夠多的信息來(lái)描述一個(gè)具體的對(duì)象”。但終歸屬于類(lèi),所以仍然擁有普通類(lèi)一樣的定義。依然可以在類(lèi)的實(shí)體(直白點(diǎn)就是能在{}里面)定義成員變量,成員方法,構(gòu)造方法等。
而對(duì)于接口來(lái)說(shuō)接口一般指的就是抽象方法和常量的集合(里面的數(shù)據(jù)以及方法只能是static和final類(lèi)型)
總結(jié)
以上就是今天要講的內(nèi)容,關(guān)于interface的用法,我們?cè)谑褂胕nterface的時(shí)候需要的就是理解這個(gè)接口是為了實(shí)現(xiàn)什么樣的方法,比如在java原有的包里面有一個(gè)ActionLitener接口,可以實(shí)現(xiàn)對(duì)于一個(gè)按鈕的監(jiān)聽(tīng)(監(jiān)聽(tīng)器)。這個(gè)接口里面只有一個(gè)抽象方法就是actionPerformed就是用來(lái)實(shí)現(xiàn)這個(gè)功能的。
總結(jié)
以上是生活随笔為你收集整理的JAVA中interface接口的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java duplicate_java中
- 下一篇: net bios支持服务器,禁用NetB