中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Java接口如何定義方法

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

      Java接口如何定義方法

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

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

        }

        接下來,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方法。一般來說,設(shè)置時(shí)區(qū)這個(gè)功能會(huì)是各個(gè)TimeClient實(shí)現(xiàn)類中通用的一個(gè)功能。這個(gè)時(shí)候,你通常會(huì)選擇再定義一個(gè)AbstractTimeClient類來實(shí)現(xiàn)getZonedDateTime方法。而在JDK8中,你可以選擇直接在接口中來實(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

      主站蜘蛛池模板: av免费网站在线免费观看| 沿河| 亚洲中文字幕有综合久久| 武乡县| 新营市| 中文无码日韩欧免费视频| 国产在线观看免费一级| 精品国产又大又黄又粗av| 元码人妻精品一区二区三区9| 铅山县| 江北区| 玉门市| 亚洲女同一区二区久久| av天堂吧手机版在线观看| 天堂AV无码AV毛片毛| 日本牲交精品一区二区三区| 国产精品一区二区久久精品蜜臀| 久久亚洲精彩无码天堂| 永和县| 宁德市| 丰县| 国产亚洲人成在线影院 | 一本一本久久a久久精品综合| 北条麻妃精品一区二区三区| 鄢陵县| 成人无码无遮挡很H在线播放| 日韩精品人妻少妇一区二区| 国产99精品精品久久免费| 久久国产一区二区三区| 亚洲综合国产成人av| 91精品国产闺蜜国产在线| 青青草极品视频在线播放 | 亚洲精品久久久蜜桃一区 | 太大太粗太爽免费视频| 亚洲AV无码日韩一区二区乱| 精品日本一区二区视频| 久久久久久免费播放一级毛片| 亚洲综合日韩中文字幕| A阿V天堂免费无码专区| 国产精品毛片一区二区熟女| 韩国美女av一区二区三区四区|