java創建介面
『壹』 java中如何動態創建介面的實現方法
有很多應用場景,用到了介面動態實現,下面舉幾個典型的應用:
1、mybatis / jpa 等orm框架,可以在介面上加註解進行開發,不需要編寫實現類,運行時動態產生實現。
2、bbo等分布式服務框架,消費者只需要引入介面就可以調用遠程的實現,分析源代碼,其實在消費端產生了介面的代理實現,再由代理調用遠程介面。
3、spring aop 這是最典型的動態代理了。
創建介面的動態實現,有二種最常用的方式:JDK動態代理和CGLIB動態代理。
『貳』 Java新手,請教如何寫一個介面
public interface IntStack {
public void push(int x);
public int pop();
public void show();
}
public class MyIntStack implements IntStack {
private int[] arrStack;
public MyIntStack(int length) {
arrStack = new int[length];
for( int i=0;i<length;i++ )
arrStack[i]=-1;
}
public void push(int x) {
System.out.println(x);
}
public int pop() {
System.out.println("pop");
}
public void show(){
System.out.println("show");
}
}
『叄』 JAVA, 怎麼創建這個介面求教
介面只能是抽象的,任何介面都是抽象介面。抽象介面裡面只能是方法的聲明,方法的具體操作由繼承他的類來具體實現。
首先你需要創建一個介面:
public interface Actionlistener{
public abstract void actionPerformed(ActionEvent event);
}
然後實例去繼承:
public abc implements Actionlistener{
方法的重新;
}
『肆』 java介面的創建和使用
interfaceShapeArea{
publicfloatgetArea();
}
{
privatefloatx;//長
privatefloaty;//寬
Rectangle(floatx,floaty){
System.out.println(this);
this.x=x;
this.y=y;
}
@Override
publicfloatgetArea(){
//TODOAuto-generatedmethodstub
System.out.println((float)(x*y));
return(float)(x*y);
}
}
{
Square(floatx,floaty){
super(x,y);
//TODOAuto-generatedconstructorstub
}
}
{
privatefloatr;//半徑
Circle(floatr){
this.r=r;
}
@Override
publicfloatgetArea(){
//TODOAuto-generatedmethodstub
System.out.println((float)(Math.PI*r*r));
return(float)(Math.PI*r*r);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
newSquare(2,2).getArea();
newCircle(2).getArea();
}
}
『伍』 java定義介面時需要使用的關鍵字是
interface
java定義介面時需要使用的關鍵字是interface。Java 介面的定義方式與類基本相同,不過介面定義使用的關鍵字是 interface,介面的主要用途就是被實現類實現,一個類可以實現一個或多個介面,繼承使用 extends 關鍵字,實現則使用 implements 關鍵字。因為一個類可以實現多個介面,這也是 Java 為單繼承靈活性不足所作的補充。java定義介面時需要使用的關鍵字是interface。
(5)java創建介面擴展閱讀:
Java介面和Java抽象類最大的一個區別,就在於Java抽象類可以提供某些方法的部分實現,而Java介面不可以,這大概就是Java抽象類唯一的優點吧,但這個優點非常有用。
如果向一個抽象類里加入一個新的具體方法時,那麼它所有的子類都一下子都得到了這個新方法,而Java介面做不到這一點,如果向一個Java介面里加入一個新方法,所有實現這個介面的類就無法成功通過編譯了,因為你必須讓每一個類都再實現這個方法才行,這顯然是Java介面的缺點。
『陸』 java怎麼定義一個介面
java中介面的定義和介面的實現
1.介面的定義
使用interface來定義一個介面。介面定義同類的定義類似,也是分為介面的聲明和介面體,其中介面體由常量定義和方法定義兩部分組成。定義介面的基本格式如下:
[修飾符] interface 介面名 [extends 父介面名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
修飾符:可選,用於指定介面的訪問許可權,可選值為public。如果省略則使用默認的訪問許可權。
介面名:必選參數,用於指定介面的名稱,介面名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父介面名列表:可選參數,用於指定要定義的介面繼承於哪個父介面。當使用extends關鍵字時,父介面名為必選參數。
方法:介面中的方法只有定義而沒有被實現。
例如,定義一個用於計算的介面,在該介面中定義了一個常量PI和兩個方法,具體代碼如下:
1 public interface CalInterface
2 {
3 final float PI=3.14159f;//定義用於表示圓周率的常量PI
4 float getArea(float r);//定義一個用於計算面積的方法getArea()
5 float getCircumference(float r);//定義一個用於計算周長的方法getCircumference()
6 }
注意:
與Java的類文件一樣,介面文件的文件名必須與介面名相同。
2.介面的實現
介面在定義後,就可以在類中實現該介面。在類中實現介面可以使用關鍵字implements,其基本格式如下:
[修飾符] class <類名> [extends 父類名] [implements 介面列表]{
}
修飾符:可選參數,用於指定類的訪問許可權,可選值為public、abstract和final。
類名:必選參數,用於指定類的名稱,類名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父類名:可選參數,用於指定要定義的類繼承於哪個父類。當使用extends關鍵字時,父類名為必選參數。
implements 介面列表:可選參數,用於指定該類實現的是哪些介面。當使用implements關鍵字時,介面列表為必選參數。當介面列表中存在多個介面名時,各個介面名之間使用逗號分隔。
在類中實現介面時,方法的名字、返回值類型、參數的個數及類型必須與介面中的完全一致,並且必須實現介面中的所有方法。例如,編寫一個名稱為Cire的類,該類實現5.7.1節中定義的介面Calculate,具體代碼如下:
1 public class Cire implements CalInterface
2 {
3 public float getArea(float r)
4 {
5 float area=PI*r*r;//計算圓面積並賦值給變數area
6 return area;//返回計算後的圓面積
7 }
8 public float getCircumference(float r)
9 {
10 float circumference=2*PI*r; //計算圓周長並賦值給變數circumference
11 return circumference; //返回計算後的圓周長
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 }
在類的繼承中,只能做單重繼承,而實現介面時,一次則可以實現多個介面,每個介面間使用逗號「,」分隔。這時就可能出現常量或方法名沖突的情況,解決該問題時,如果常量沖突,則需要明確指定常量的介面,這可以通過「介面名.常量」實現。如果出現方法沖突時,則只要實現一個方法就可以了。下面通過一個具體的實例詳細介紹以上問題的解決方法。
『柒』 java創建介面編程怎麼寫代碼
interface Bike{
public void radio();
}
interface Car{
public void tv();
}
interface Dt{
public void music();
}
public class InterfaceDemo implements Bike,Car,Dt{
public void radio() {
System.out.println("可以聽廣播");
}
public void tv() {
System.out.println("可以看電視");
}
public void music() {
System.out.println("可以聽音樂");
}
public static void main(String args[])
{
InterfaceDemo m=new InterfaceDemo();
m.radio();
m.tv();
m.music();
}
}
『捌』 java 關於介面的創建
你如果要把Test和介面建在一個包裡面,那麼就不需要import
要用的話先編譯Aaa。java文件,將其放在一個a(包名)文件夾下面,然後在a所在的路徑下下面編譯Test,將Test.java放在與a同文件夾下面。注意,javac的當前目錄一定要在a文件夾所在的目錄。
『玖』 java如何寫一個介面
非常簡單,基礎語法:
public interface 介面名 {
常量定義;
抽象方法定義;
default 方法定義;
}
即使你在介面中不定義任何方法,也是可以的。
『拾』 java如何創建一個簡單的http介面
1.修改web.xml文件
<!-- 模擬HTTP的調用,寫的一個http介面 --> <servlet> <servlet-name>TestHTTPServer</servlet-name> <servlet-class>com.atoz.http.SmsHTTPServer</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestHTTPServer</servlet-name> <url-pattern>/httpServer</url-pattern> </servlet-mapping>
2.新建SmsHTTPServer.java文件
package com.atoz.http;
import java.io.IOException; import java.io.PrintWriter;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import com.atoz.action.order.SendSMSAction; import com.atoz.util.SpringContextUtil;
public class SmsHTTPServer extends HttpServlet { private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String content = request.getParameter("content"); //String content = new String(request.getParameter("content").getBytes("iso-8859-1"), "utf-8"); String mobiles = request.getParameter("mobiles"); String businesscode = request.getParameter("businesscode"); String businesstype = request.getParameter("businesstype"); if (content == null || "".equals(content) || content.length() <= 0) { System.out.println("http call failed,參數content不能為空,程序退出"); } else if (mobiles == null || "".equals(mobiles) || mobiles.length() <= 0) { System.out.println("http call failed,參數mobiles不能為空,程序退出"); } else { /*SendSMSServiceImpl send = new SendSMSServiceImpl();*/ SendSMSAction sendSms = (SendSMSAction) SpringContextUtil.getBean("sendSMS"); sendSms.sendSms(content, mobiles, businesscode, businesstype); System.out.println("---http call success---"); } out.close(); }
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } }
3.調用http介面
String content = "測試"; content = URLEncoder.encode(content, "utf-8"); String url = "http://localhost:8180/atoz_2014/httpServer?content=" + content + "&mobiles=15301895007"; URL httpTest; try { httpTest = new URL(url); BufferedReader in; try { in = new BufferedReader(new InputStreamReader( httpTest.openStream())); String inputLine = null; String resultMsg = null; //得到返回信息的xml字元串 while ((inputLine = in.readLine()) != null) if(resultMsg != null){ resultMsg += inputLine; }else { resultMsg = inputLine; } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
打字不易,望採納,謝謝