簡體   English   中英

編寫一個方法 isAbleToFly(),它不接受任何參數並返回 true 或 false?

[英]Writing a method isAbleToFly(), which takes no argument and returns true or false?

我正在編寫一個名為 Launchable 的界面。 Launchable 接口指定了三個方法:launch(),不帶參數,不返回值;isAbleToFly(),不帶參數,返回 true 或 false;land(),不帶參數,不返回值。

這是我為 isAbleToFly 所做的嘗試:

 public interface Launchable
{
 public void launch();

 public boolean isAbleToFly();
 return true

 public void land();

 }

但它說類型的非法開始返回true?

boolean isAbleToFly()作為接口聲明看起來不錯,但您可能不想在接口中聲明實現( return true )。 如果您使用的是 Java 8 或更高版本,您可以為您的方法聲明一個默認實現(更多信息如下)。

您將需要創建一個擴展該接口的類,然后才添加實現。 如果您想要一個在實現其他方法的同時為某些方法定義契約的結構,請查看抽象類。 https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

    interface Launchable {
         void launch();

         boolean isAbleToFly();

         void land();
     }

     class LandThing implements Launchable {
         public void launch() {
             System.out.println("¯\\_(ツ)_/¯");
         }

         public boolean isAbleToFly() {
             return false;
         }

         public void land() {
            System.out.println("¯\\_(ツ)_/¯"); 
         }

     }

    class Playground {
        public static void main(String[ ] args) {
            Launchable landThing = new LandThing();
            System.out.println("Can landThing fly?: " + landThing.isAbleToFly());
            landThing.land();
        }
    }

可運行示例在這里

==== 編輯接口中的默認方法 ===

對於 Java 8 或更高版本,現在您可以為接口聲明默認方法如下例所示 根據文檔,用例是在您改進接口時為舊代碼提供向后兼容性,因此它可能不是您想要的。

    interface Launchable {
         void launch();

         default boolean isAbleToFly() {
             return true;
         };

         void land();
     }

     class FlyThing implements Launchable {
         public void launch() {
             System.out.println("¯\\_(ツ)_/¯");
         }

         // Notice that we will be using the default implementation of isAbleToFly here


         public void land() {
            System.out.println("¯\\_(ツ)_/¯"); 
         }

     }


     class LandThing implements Launchable {
         public void launch() {
             System.out.println("¯\\_(ツ)_/¯");
         }

         public boolean isAbleToFly() {
             return false;
         }

         public void land() {
            System.out.println("¯\\_(ツ)_/¯"); 
         }

     }

    class Playground {
        public static void main(String[ ] args) {
            Launchable landThing = new LandThing();
            Launchable flyThing = new FlyThing();
            System.out.println("Can landThing fly?: " + landThing.isAbleToFly());
            System.out.println("Can flyThing fly?: " + flyThing.isAbleToFly());

            landThing.land();
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM