Display.java ? 接口代碼如下:
目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、東昌網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
public?interface?Display?{
public?void?dis();
}
接口的實(shí)現(xiàn)類DisplayImpl.java ? ?代碼如下:
public?class?DisplayImpl?implements?Display?{
@Override
public?void?dis()?{
//?TODO?Auto-generated?method?stub
System.out.println("輸出方法");
}
public?static?void?main(String[]?args)?{
new?DisplayImpl().dis();
}
}
public class Admins implements Userinterface{
private String name;
private String password;
private static int userNum;
public Admins() {
userNum ++;
}
public Admins(String name, String password) {
this.name = name;
this.password = password;
userNum ++;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return this.password;
}
public String toString() {
return "Total: " + Admins.userNum + "\nName: " + this.name + "\nPassword: " + this.password;
}
public static void main(String [] args) {
Userinterface [] users = new Userinterface[]{new Admins("jeryy", "11111"), new Admins("green", "123123")};
for(Userinterface u: users) {
System.out.println(u);
}
}
}
interface Userinterface{
public void setPassword(String password);
public String getPassword();
public String toString();
}
public class Bins{
public static void main(String [] args) {
int len = 10;
int [] dist = new int [len];
for(int i = 0; i dist.length; i ++) {
dist[i] = (int)(Math.random() * 100);
}
java.util.Arrays.sort(dist);
System.out.println("生成數(shù)組如下: ");
for(int i: dist) {
System.out.print(i + "\t");
}
java.util.Scanner san = new java.util.Scanner(System.in);
System.out.print("輸入要查找的數(shù): ");
int key = san.nextInt();
int res = Bins.binSearch(dist, key);
//System.out.println(res);
String info = (res =0 ) ? (key + ":" + res) : "查找失敗";
System.out.println(info);
}
public static int binSearch(int [] dist, int key) {
java.util.Arrays.sort(dist);
return java.util.Arrays.binarySearch(dist, key);
}
}
java中接口的定義和接口的實(shí)現(xiàn)
1.接口的定義
使用interface來(lái)定義一個(gè)接口。接口定義同類的定義類似,也是分為接口的聲明和接口體,其中接口體由常量定義和方法定義兩部分組成。定義接口的基本格式如下:
[修飾符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
修飾符:可選,用于指定接口的訪問(wèn)權(quán)限,可選值為public。如果省略則使用默認(rèn)的訪問(wèn)權(quán)限。
接口名:必選參數(shù),用于指定接口的名稱,接口名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫。
extends 父接口名列表:可選參數(shù),用于指定要定義的接口繼承于哪個(gè)父接口。當(dāng)使用extends關(guān)鍵字時(shí),父接口名為必選參數(shù)。
方法:接口中的方法只有定義而沒有被實(shí)現(xiàn)。
例如,定義一個(gè)用于計(jì)算的接口,在該接口中定義了一個(gè)常量PI和兩個(gè)方法,具體代碼如下:
1 public interface CalInterface
2 {
3 ? ? final float PI=3.14159f;//定義用于表示圓周率的常量PI
4 ? ? float getArea(float r);//定義一個(gè)用于計(jì)算面積的方法getArea()
5 ? ? float getCircumference(float r);//定義一個(gè)用于計(jì)算周長(zhǎng)的方法getCircumference()
6 }
注意:
與Java的類文件一樣,接口文件的文件名必須與接口名相同。
2.接口的實(shí)現(xiàn)
接口在定義后,就可以在類中實(shí)現(xiàn)該接口。在類中實(shí)現(xiàn)接口可以使用關(guān)鍵字implements,其基本格式如下:
[修飾符] class 類名 [extends 父類名] [implements 接口列表]{
}
修飾符:可選參數(shù),用于指定類的訪問(wèn)權(quán)限,可選值為public、abstract和final。
類名:必選參數(shù),用于指定類的名稱,類名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫。
extends 父類名:可選參數(shù),用于指定要定義的類繼承于哪個(gè)父類。當(dāng)使用extends關(guān)鍵字時(shí),父類名為必選參數(shù)。
implements 接口列表:可選參數(shù),用于指定該類實(shí)現(xiàn)的是哪些接口。當(dāng)使用implements關(guān)鍵字時(shí),接口列表為必選參數(shù)。當(dāng)接口列表中存在多個(gè)接口名時(shí),各個(gè)接口名之間使用逗號(hào)分隔。
在類中實(shí)現(xiàn)接口時(shí),方法的名字、返回值類型、參數(shù)的個(gè)數(shù)及類型必須與接口中的完全一致,并且必須實(shí)現(xiàn)接口中的所有方法。例如,編寫一個(gè)名稱為Cire的類,該類實(shí)現(xiàn)5.7.1節(jié)中定義的接口Calculate,具體代碼如下:
1 public class Cire implements CalInterface
2 {
3 ? ? public float getArea(float r)
4 ? ? {
5 ? ? ? ? float area=PI*r*r;//計(jì)算圓面積并賦值給變量area
6 ? ? ? ? return area;//返回計(jì)算后的圓面積
7 ? ? }
8 ? ? public float getCircumference(float r)
9 ? ? {
10 ? ? ? ? float circumference=2*PI*r; ? ? ?//計(jì)算圓周長(zhǎng)并賦值給變量circumference
11 ? ? ? ? return circumference; ? ? ? ? ? //返回計(jì)算后的圓周長(zhǎng)
12 ? ? }
13 ? ? public static void main(String[] args)
14 ? ? {
15 ? ? ? ? Cire c = new Cire();
16 ? ? ? ? float f = c.getArea(2.0f);
17 ? ? ? ? System.out.println(Float.toString(f));
18 ? ? }
19 }
在類的繼承中,只能做單重繼承,而實(shí)現(xiàn)接口時(shí),一次則可以實(shí)現(xiàn)多個(gè)接口,每個(gè)接口間使用逗號(hào)“,”分隔。這時(shí)就可能出現(xiàn)常量或方法名沖突的情況,解決該問(wèn)題時(shí),如果常量沖突,則需要明確指定常量的接口,這可以通過(guò)“接口名.常量”實(shí)現(xiàn)。如果出現(xiàn)方法沖突時(shí),則只要實(shí)現(xiàn)一個(gè)方法就可以了。下面通過(guò)一個(gè)具體的實(shí)例詳細(xì)介紹以上問(wèn)題的解決方法。
第一步:用戶同意授權(quán),獲取code 引導(dǎo)用戶進(jìn)入授權(quán)的URL 修改一些參數(shù)
在確保微信公眾賬號(hào)擁有授權(quán)作用域(scope參數(shù))的權(quán)限的前提下(服務(wù)號(hào)獲得高級(jí)接口后,默認(rèn)帶有scope參數(shù)中的snsapi_base和snsapi_userinfo),引導(dǎo)關(guān)注者打開如下頁(yè)面:
第二步:通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token? 這里的access_token與基礎(chǔ)獲取的access_token不同
具體做法與上面基本一致。更換相對(duì)應(yīng)的值。需要注意的是code可以寫一個(gè)Servlet獲取。String code = request.getParameter("code");get/post都可以。
這樣子就會(huì)返回一下json格式數(shù)據(jù)
具體代碼如下。獲取的code換取的access_token
根據(jù)上面代碼獲取的access_token? openid 然后再請(qǐng)求獲取userinfo的接口。就能得到微信用戶的所有信息了。
具體返回如下。獲取用戶信息代碼不再寫。
這就獲取到用戶的openid。應(yīng)用授權(quán)作用域,snsapi_base (不彈出授權(quán)頁(yè)面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo (彈出授權(quán)頁(yè)面,可通過(guò)openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)我自己用的作用域?yàn)閟nsapi_userinfo。用戶點(diǎn)擊跳轉(zhuǎn)頁(yè)面為
本文名稱:授權(quán)接口java代碼 java項(xiàng)目授權(quán)l(xiāng)icense
標(biāo)題URL:http://www.rwnh.cn/article34/ddjcpse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、建站公司、定制網(wǎng)站、網(wǎng)站制作、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)