<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java接口如何定義方法

    時(shí)間:2024-11-13 20:21:59 JAVA認(rèn)證 我要投稿
    • 相關(guān)推薦

    Java接口如何定義方法

      Java接口的方法都是public、abstract類型的,沒有方法體的。但是在JDK8里面,你是可以突破這個(gè)界限的哦。那么如何在java接口中定義方法呢?下面跟yjbys小編一起來(lái)看看吧!

      假設(shè)我們現(xiàn)在有一個(gè)接口:TimeClient,其代碼結(jié)構(gòu)如下:

      import java.time.*;

      public interface TimeClient {

      void setTime(int hour, int minute, int second);

      void setDate(int day, int month, int year);

      void setDateAndTime(int day, int month, int year,

      int hour, int minute, int second);

      LocalDateTime getLocalDateTime();

      }

      接下來(lái),SimpleTimeClient類實(shí)現(xiàn)了TimeClient接口,具體代碼如下:

      package defaultmethods;

      import java.time.*;

      import java.lang.*;

      import java.util.*;public class SimpleTimeClient implements TimeClient {

      private LocalDateTime dateAndTime;

      public SimpleTimeClient() {

      dateAndTime = LocalDateTime.now();

      }

      public void setTime(int hour, int minute, int second) {

      LocalDate currentDate = LocalDate.from(dateAndTime);

      LocalTime timeToSet = LocalTime.of(hour, minute, second);

      dateAndTime = LocalDateTime.of(currentDate, timeToSet);

      }

      public void setDate(int day, int month, int year) {

      LocalDate dateToSet = LocalDate.of(day, month, year);

      LocalTime currentTime = LocalTime.from(dateAndTime);

      dateAndTime = LocalDateTime.of(dateToSet, currentTime);

      }

      public void setDateAndTime(int day, int month, int year,

      int hour, int minute, int second) {

      LocalDate dateToSet = LocalDate.of(day, month, year);

      LocalTime timeToSet = LocalTime.of(hour, minute, second);

      dateAndTime = LocalDateTime.of(dateToSet, timeToSet);

      }

      public LocalDateTime getLocalDateTime() {

      return dateAndTime;

      }

      public String toString() {

      return dateAndTime.toString();

      }

      public static void main(String... args) {

      TimeClient myTimeClient = new SimpleTimeClient();

      System.out.println(myTimeClient.toString());

      }

      }

      現(xiàn)在假設(shè)你想在接口TimeClient中添加一個(gè)新功能,通過這個(gè)功能我們可以指定我們所在的時(shí)區(qū)。

      public interface TimeClient {

      void setTime(int hour, int minute, int second);

      void setDate(int day, int month, int year);

      void setDateAndTime(int day, int month, int year,

      int hour, int minute, int second);

      LocalDateTime getLocalDateTime();

      ZonedDateTime getZonedDateTime(String zoneString); }

      隨著TimeClient的變化,你不得不修改你的SimpleTimeClient類,實(shí)現(xiàn)getZonedDateTime方法。一般來(lái)說,設(shè)置時(shí)區(qū)這個(gè)功能會(huì)是各個(gè)TimeClient實(shí)現(xiàn)類中通用的一個(gè)功能。這個(gè)時(shí)候,你通常會(huì)選擇再定義一個(gè)AbstractTimeClient類來(lái)實(shí)現(xiàn)getZonedDateTime方法。而在JDK8中,你可以選擇直接在接口中來(lái)實(shí)現(xiàn)該方法(interface已經(jīng)把手伸到abstract class的地盤了)。

      package defaultmethods;

      import java.time.*;

      public interface TimeClient {

      void setTime(int hour, int minute, int second);

      void setDate(int day, int month, int year);

      void setDateAndTime(int day, int month, int year,

      int hour, int minute, int second);

      LocalDateTime getLocalDateTime();

      static ZoneId getZoneId (String zoneString) {

      try {

      return ZoneId.of(zoneString);

      } catch (DateTimeException e) {

      System.err.println("Invalid time zone: " + zoneString +

      "; using default time zone instead.");

      return ZoneId.systemDefault();

      }

      }

      default ZonedDateTime getZonedDateTime(String zoneString) {

      return ZonedDateTime.of(getLocalDateTime(), getZoneId(zoneString));

      }

      }

      從上面的例子,我們可以看到通過static和default修飾符我們可以直接在接口中實(shí)現(xiàn)方法體,同時(shí)不要忘記,任何在接口中方法聲明都是public類型的哦。

      OK,現(xiàn)在我們需要一個(gè)新的接口:AnotherTimeClient,它得繼承TimeClient接口。那么,對(duì)于TimeClient接口中定義的getZonedDateTime方法,你可以做如下三種處理:

      重新聲明getZonedDateTime方法,使它變成abstract類型。

      重新定義getZonedDateTime方法。

      直接繼承。

      而static方法和我們?cè)陬惱锩娑x的static方法概念一致。

    【Java接口如何定義方法】相關(guān)文章:

    Java數(shù)組定義常用方法09-28

    區(qū)分Java中抽象類和接口的方法10-06

    Java中接口的使用06-19

    如何區(qū)分Java中抽象類和接口09-15

    Java的接口和抽象類07-09

    jQuery定義插件的方法07-24

    色彩如何定義建筑09-14

    常見液晶顯示器的接口定義是什么09-27

    Java自定義線程池相關(guān)代碼09-14

    如何定義企業(yè)文化09-04

    主站蜘蛛池模板: 久久久久人妻一区精品果冻| 午夜成人精品福利网站在线观看| 国产精品成人69XXX免费视频| 亚洲精品午夜无码专区| 99免费精品国产| 久久精品成人免费看| 久久精品无码一区二区无码| 久久久久国产精品三级网| 99在线精品免费视频| 欧美一卡2卡3卡四卡海外精品| 国内精品久久久久久久97牛牛| 亚洲午夜成人精品电影在线观看| 国产精品一区在线观看你懂的| 四虎在线精品视频一二区| 久久这里只精品国产99热| 国产成人精品精品欧美| 国产精品一区二区久久国产| 亚洲欧洲成人精品香蕉网| 久久久久久极精品久久久| 无码人妻精品一区二区三区久久久 | 精品午夜福利1000在线观看| 免费精品一区二区三区第35| 国产精品久久久天天影视| 99香蕉国产精品偷在线观看| 国产精品一区二区久久国产| 精品视频一区二区三三区四区| 亚洲国产精品无码一线岛国| 日韩精品无码专区免费播放| 中文无码久久精品| 亚洲欧美精品AAAAAA片| 熟妇人妻VA精品中文字幕| 欧美日韩人妻精品一区二区在线 | 国产乱人伦偷精品视频不卡| 国产精品 视频一区 二区三区| 911亚洲精品国内自产| 91精品国产91久久| 国产欧美在线观看精品一区二区 | 亚洲处破女AV日韩精品| 日韩精品久久久久久久电影蜜臀| 无码人妻精品一区二区三区久久久| 精品国精品国产自在久国产应用|