【问题标题】:Writing a method isAbleToFly(), which takes no argument and returns true or false?写一个方法isAbleToFly(),不带参数,返回真假?
【发布时间】:2020-05-10 17:06:37
【问题描述】:

我正在编写一个名为 Launchable 的界面。 Launchable 接口指定了三个方法:launch(),不带参数,不返回值;isAbleToFly(),不带参数,返回真或假;land(),不带参数,不返回值。

这是我为 isAbleToFly 尝试过的:

 public interface Launchable
{
 public void launch();

 public boolean isAbleToFly();
 return true

 public void land();

 }

但它说非法开始类型返回 true?

【问题讨论】:

  • 问题是什么?
  • 你尝试的逻辑是:“你能飞吗?” “如果是。否则不是。”,你能发现逻辑错误吗?
  • 你期待什么?
  • @Smile Launchable 接口指定了三个方法:launch(),不带参数,不返回值,isAbleToFly(),不带参数,返回真或假,land(),带没有参数并且没有返回值。 i.编写Launchable接口。
  • @Haroon1234567 现在你随机更改了一些东西,希望它能起作用。编程没那么容易。从这里开始docs.oracle.com/javase/tutorial 而且接口根本没有实现。

标签: java methods interface boolean


【解决方案1】:

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

可运行示例here

==== 编辑接口中的默认方法 ===

对于 Java 8 或更高版本,现在您可以为您的接口声明 default methods,就像在 following example 中一样。根据文档,用例是在您改进接口时为旧代码提供向后兼容性,因此它可能不是您想要的。

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

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多