• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. Java接口如何定義方法

        時間:2024-11-13 20:21:59 JAVA認證 我要投稿
        • 相關推薦

        Java接口如何定義方法

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

          假設我們現在有一個接口:TimeClient,其代碼結構如下:

          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();

          }

          接下來,SimpleTimeClient類實現了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());

          }

          }

          現在假設你想在接口TimeClient中添加一個新功能,通過這個功能我們可以指定我們所在的時區。

          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類,實現getZonedDateTime方法。一般來說,設置時區這個功能會是各個TimeClient實現類中通用的一個功能。這個時候,你通常會選擇再定義一個AbstractTimeClient類來實現getZonedDateTime方法。而在JDK8中,你可以選擇直接在接口中來實現該方法(interface已經把手伸到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修飾符我們可以直接在接口中實現方法體,同時不要忘記,任何在接口中方法聲明都是public類型的哦。

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

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

          重新定義getZonedDateTime方法。

          直接繼承。

          而static方法和我們在類里面定義的static方法概念一致。

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【Java接口如何定義方法】相關文章:

        Java數組定義常用方法09-28

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

        Java中接口的使用06-19

        如何區分Java中抽象類和接口09-15

        Java的接口和抽象類07-09

        jQuery定義插件的方法07-24

        色彩如何定義建筑09-14

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

        Java自定義線程池相關代碼09-14

        如何定義企業文化09-04

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲视频在线精品 | 婷婷综合色丁香五月不卡 | 亚洲最大的欧美日韩在线 | 亚洲中文字幕一级视频电影 | 日韩亚洲国产综合久久久 | 日韩精品中文在线一区二区 |

            Java接口如何定義方法

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

              假設我們現在有一個接口:TimeClient,其代碼結構如下:

              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();

              }

              接下來,SimpleTimeClient類實現了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());

              }

              }

              現在假設你想在接口TimeClient中添加一個新功能,通過這個功能我們可以指定我們所在的時區。

              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類,實現getZonedDateTime方法。一般來說,設置時區這個功能會是各個TimeClient實現類中通用的一個功能。這個時候,你通常會選擇再定義一個AbstractTimeClient類來實現getZonedDateTime方法。而在JDK8中,你可以選擇直接在接口中來實現該方法(interface已經把手伸到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修飾符我們可以直接在接口中實現方法體,同時不要忘記,任何在接口中方法聲明都是public類型的哦。

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

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

              重新定義getZonedDateTime方法。

              直接繼承。

              而static方法和我們在類里面定義的static方法概念一致。