本文目录一览:
怎么看java代码中接口调用关系
类与类的关系
1、依赖关系
依赖关系表示一个类依赖于另一个类的定义。通俗来讲即是类A中使用了另外的一个类B,且类B并非类A中作为属性存在,即表示类A依赖于类B。对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。
class A{
public B method(C c){
B b = new B();
return b;
}
}
登录后复制
2、关联关系
关联关系是类与类之间的联接,它使一个类知道另一个类的属性和方法。通俗来讲即类A中有一个属性b,该属性的数据类型为类B,类A可以通过属性b调用类B的属性与方法。也即一般来说的has-a的关系。
class A{
public B b;
}
登录后复制
3、聚合关系
聚合关系是特殊的关联关系,其与关联关系在代码上并无实际上的区别,二者的区别主要体现在语义上,关联关系即代表可有可无,而聚合关系则代表必须拥有(注:被聚合或关联的事务也代表一个单独的事务,其也有独立的意义。)举例说明就像笔记本电脑,其与外接鼠标就是关联关系,外接鼠标只是附件,而想cpu,内存条等是组成一个笔记本电脑所必须的,而他们的关系就是聚合关系。
class computer{
public Cpu cpu1;
}
登录后复制
4、组合关系
组合关系也是特殊的关联关系,其类似于聚合关系,但比聚合关系更加的强,即对象 A 包含对象 B,对象 B 离开对象 A 没有实际意义。举例来讲就是作为一个人,你可以没有钱,但你不能没有脑子(物理),你与钱就是关联关系,钱乃身外之物,而你与大脑则是组合关系,大脑每人就一个,没了它,你便无法存在,而单独一个脑子离开了人也就失去了它应有的作用。
class person{
public Head head;
}
登录后复制
5、继承关系
类与类的继承关系,类与接口的实现关系。继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
class A extends B{
public A(){
super();
}
}
登录后复制
类与类之间的继承只能是单继承,但可以多层继承。
单继承即表示一个类只可以继承一个父类。
多层继承即是类A继承类B,而类B又继承了类C,所以类A间接继承了类C
类与接口之间的关系
注:Java8新增了默认方法和静态方法;
public interface A{
//抽象方法
public void a1();
//默认方法
default void a2() {
System.out.println("a2");
}
//静态方法
static void a4() {
System.out.println("a4");
}
}
登录后复制

其中,静态方法只供接口直接使用
类可以继承一个类且实现多个接口
注意:
1.如果多个接口中有同名的抽象方法,那么实现类只需要实现一次即可
2.如果多个接口中有同名的默认方法,那么实现类必须重写一次,并且要去掉default关键字
接口可以继承多个接口
注意:
1.如果多个父接口中有同名的抽象方法,那么子接口只需要实现一次即可
2.如果多个父接口中有同名的默认方法,那么子接口必须重写默认方法,必须要加default关键字
怎么用java调用微信支付接口
java调用微信支付接口方法:\x0d\x0aRequestHandlerrequestHandler=newRequestHandler(super.getRequest(),super.getResponse());\x0d\x0a\x0d\x0a//获取token//两小时内有效,两小时后重新获取\x0d\x0a\x0d\x0aToken=requestHandler.GetToken();\x0d\x0a\x0d\x0a//更新token到应用中\x0d\x0a\x0d\x0arequestHandler.getTokenReal();\x0d\x0a\x0d\x0aSystem.out.println("微信支付获取token=======================:"+Token);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//requestHandler初始化\x0d\x0a\x0d\x0arequestHandler.init();\x0d\x0a\x0d\x0arequestHandler.init(appid,appsecret,appkey,partnerkey,key);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------本地系统生成订单-------------------------------------\x0d\x0a\x0d\x0a//设置package订单参数\x0d\x0a\x0d\x0aSortedMappackageParams=newTreeMap();\x0d\x0a\x0d\x0apackageParams.put("bank_type","WX");//支付类型\x0d\x0a\x0d\x0apackageParams.put("body","xxxx");//商品描述\x0d\x0a\x0d\x0apackageParams.put("fee_type","1");//银行币种\x0d\x0a\x0d\x0apackageParams.put("input_charset","UTF-8");//字符集\x0d\x0a\x0d\x0apackageParams.put("notify_url","");//通知地址这里的通知地址使用外网地址测试,注意80端口是否打开。\x0d\x0a\x0d\x0apackageParams.put("out_trade_no",no);//商户订单号\x0d\x0a\x0d\x0apackageParams.put("partner",partenerid);//设置商户号\x0d\x0a\x0d\x0apackageParams.put("spbill_create_ip",super.getRequest().getRemoteHost());//订单生成的机器IP,指用户浏览器端IP\x0d\x0a\x0d\x0apackageParams.put("total_fee",String.valueOf(rstotal));//商品总金额,以分为单位\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//设置支付参数\x0d\x0a\x0d\x0aSortedMapsignParams=newTreeMap();\x0d\x0a\x0d\x0asignParams.put("appid",appid);\x0d\x0a\x0d\x0asignParams.put("noncestr",noncestr);\x0d\x0a\x0d\x0asignParams.put("traceid",PropertiesUtils.getOrderNO());\x0d\x0a\x0d\x0asignParams.put("timestamp",timestamp);\x0d\x0a\x0d\x0asignParams.put("package",packageValue);\x0d\x0a\x0d\x0asignParams.put("appkey",this.appkey);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成支付签名,要采用URLENCODER的原始值进行SHA1算法!\x0d\x0a\x0d\x0aStringsign="";\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0asign=Sha1Util.createSHA1Sign(signParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//增加非参与签名的额外参数\x0d\x0a\x0d\x0asignParams.put("sign_method","sha1");\x0d\x0a\x0d\x0asignParams.put("app_signature",sign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//api支付拼包结束------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//获取prepayid\x0d\x0a\x0d\x0aStringprepayid=requestHandler.sendPrepay(signParams);\x0d\x0a\x0d\x0aSystem.out.println("prepayid:"+prepayid);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------生成完成---------------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成预付快订单完成,返回给android,ios掉起微信所需要的参数。\x0d\x0a\x0d\x0aSortedMappayParams=newTreeMap();\x0d\x0a\x0d\x0apayParams.put("appid",appid);\x0d\x0a\x0d\x0apayParams.put("noncestr",noncestr);\x0d\x0a\x0d\x0apayParams.put("package","Sign=WXPay");\x0d\x0a\x0d\x0apayParams.put("partnerid",partenerid);\x0d\x0a\x0d\x0apayParams.put("prepayid",prepayid);\x0d\x0a\x0d\x0apayParams.put("appkey",this.appkey);\x0d\x0a\x0d\x0a//这里除1000是因为参数长度限制。\x0d\x0a\x0d\x0ainttime=(int)(System.currentTimeMillis()/1000);\x0d\x0a\x0d\x0apayParams.put("timestamp",String.valueOf(time));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("timestamp:"+time);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//签名\x0d\x0a\x0d\x0aStringpaysign="";\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0apaysign=Sha1Util.createSHA1Sign(payParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apayParams.put("sign",paysign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//拼json数据返回给客户端\x0d\x0a\x0d\x0aBasicDBObjectbackObject=newBasicDBObject();\x0d\x0a\x0d\x0abackObject.put("appid",appid);\x0d\x0a\x0d\x0abackObject.put("noncestr",payParams.get("noncestr"));\x0d\x0a\x0d\x0abackObject.put("package","Sign=WXPay");\x0d\x0a\x0d\x0abackObject.put("partnerid",payParams.get("partnerid"));\x0d\x0a\x0d\x0abackObject.put("prepayid",payParams.get("prepayid"));\x0d\x0a\x0d\x0abackObject.put("appkey",this.appkey);\x0d\x0a\x0d\x0abackObject.put("timestamp",payParams.get("timestamp"));\x0d\x0a\x0d\x0abackObject.put("sign",payParams.get("sign"));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aStringbackstr=dataObject.toString();\x0d\x0a\x0d\x0aSystem.out.println("backstr:"+backstr);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0areturnbackstr;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a====================到此为止,预付款订单已生成,并且已返回客户端====================\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//坐等微信服务器通知,通知的地址就是生成预付款订单的notify_url\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aResponseHandlerresHandler=newResponseHandler(request,response);\x0d\x0a\x0d\x0aresHandler.setKey(partnerkey);\x0d\x0a\x0d\x0a//创建请求对象\x0d\x0a\x0d\x0a//RequestHandlerqueryReq=newRequestHandler(request,response);\x0d\x0a\x0d\x0a//queryReq.init();\x0d\x0a\x0d\x0aif(resHandler.isTenpaySign()==true){\x0d\x0a\x0d\x0a//商户订单号\x0d\x0a\x0d\x0aStringout_trade_no=resHandler.getParameter("out_trade_no");\x0d\x0a\x0d\x0aSystem.out.println("out_trade_no:"+out_trade_no);\x0d\x0a\x0d\x0a//财付通订单号\x0d\x0a\x0d\x0aStringtransaction_id=resHandler.getParameter("transaction_id");\x0d\x0a\x0d\x0aSystem.out.println("transaction_id:"+transaction_id);\x0d\x0a\x0d\x0a//金额,以分为单位\x0d\x0a\x0d\x0aStringtotal_fee=resHandler.getParameter("total_fee");\x0d\x0a\x0d\x0a//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee\x0d\x0a\x0d\x0aStringdiscount=resHandler.getParameter("discount");\x0d\x0a\x0d\x0a//支付结果\x0d\x0a\x0d\x0aStringtrade_state=resHandler.getParameter("trade_state");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//判断签名及结果\x0d\x0a\x0d\x0aif("0".equals(trade_state)){\x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a//即时到账处理业务开始\x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行-----------------");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行完毕-----------------");\x0d\x0a\x0d\x0aSystem.out.println("success");//请不要修改或删除\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("即时到账支付成功");\x0d\x0a\x0d\x0a//给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知\x0d\x0a\x0d\x0aresHandler.sendToCFT("success");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//给微信服务器返回success否则30分钟通知8次\x0d\x0a\x0d\x0areturn"success";\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println("通知签名验证失败");\x0d\x0a\x0d\x0aresHandler.sendToCFT("fail");\x0d\x0a\x0d\x0aresponse.setCharacterEncoding("utf-8");\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println("fail-Md5failed");
java如何调用webservice接口?
Java通过WSDL文件来调用webservice直接调用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;
public class caClient {
public static void main(String[] args) {
try {
String endpoint = "";
//直接引用远程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL里面描述的接口名称
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
String temp = "测试人员";
String result = (String)call.invoke(new Object[]{temp});
//给方法传递参数,并且调用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
JAVA怎么调用接口?
String sendPost(String jsonStr, String path)
throws IOException {
byte[] data = jsonStr.getBytes();
java.net.URL url = new java.net.URL(path);
java.net.HttpURLConnection conn =
(java.net.HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);// 设置连接超时时间为5秒
conn.setReadTimeout(20 * 1000);// 设置读取超时时间为20秒
// 使用 URL 连接进行输出,则将 DoOutput标志设置为 true
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
//conn.setRequestProperty("Content-Encoding","gzip");
conn.setRequestProperty("Content-Length", String.valueOf(data.length));
OutputStream outStream = conn.getOutputStream();// 返回写入到此连接的输出流
outStream.write(data);
outStream.close();//关闭流
String msg = "";// 保存调用http服务后的响应信息
// 如果请求响应码是200,则表示成功
if (conn.getResponseCode() == 200) {
// HTTP服务端返回的编码是UTF-8,故必须设置为UTF-8,保持编码统一,否则会出现中文乱码
BufferedReader in = new BufferedReader(new InputStreamReader(
(InputStream) conn.getInputStream(), "UTF-8"));
msg = in.readLine();
in.close();
}
conn.disconnect();// 断开连接
return msg;
}