当前位置: 首页 > 知识库问答 >
问题:

编写一个方法isAbleToFly(),它不接受任何参数并返回true或false?

咸玄天
2023-03-14

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

这是我为isAbleToFly尝试的:

 public interface Launchable
{
 public void launch();

 public boolean isAbleToFly();
 return true

 public void land();

 }

但它说非法启动类型返回真的吗?

共有1个答案

吕利
2023-03-14

boolean isAbleToFly()看起来很好,但您可能不想在接口中声明实现(return true)。如果您使用的是Java8或更高版本,那么可以为您的方法声明一个默认实现(更多信息见下文)。

您需要创建一个扩展该接口的类,然后才添加实现。如果您想要一种结构,在实现其他方法的同时为某些方法定义一个契约,那么可以看看抽象类。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();
        }
    }

这里有一个可运行的示例

==编辑界面中的默认方法===

对于Java8或更高版本,现在可以为接口声明默认方法,如下例所示。根据文档,用例是在您开发接口时为旧代码提供向后兼容性,因此它可能不是您想要的。

    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();
        }
    }
 类似资料:
  • 因此,作为家庭作业,我的任务是编写包含5种静态方法的代码。其中两人要求提供以下内容: “编写一个以整数X为参数的方法,如果X为偶数,则返回true;如果X为奇数,则返回false。” 和 “编写一个以正整数N为参数的方法,如果N是素数,则返回true,否则返回false。假设N 我不清楚我是否需要打印出正确或错误的方法。在我将println添加到方法调用之前,它们显然没有打印。所以我想我有两个问题

  • 我正在使用JavaFX8开发一个Java8桌面应用程序。 我在MainApp类(扩展application类的类)中有这个方法。 我会这样使用它: 有什么方法可以实现这种行为吗?

  • 我试图解决这个问题:编写一个递归方法,返回作为int类型参数传递给它的整数中的位数。允许使用正参数和负参数。例如,-120有三个数字。 这是我的代码,但当我试图通过121时,我总是得到1:

  • 请编写一个名为lastElement的函数,该函数接受单个数组参数。函数应返回数组的最后一个元素(不删除该元素)。如果数组为空,则函数应返回null。 lastElement([3,5,7])//7 lastElement([1])//1 lastElement([])//null 我对最后一部分感到困惑,如果数组为空,函数将返回null。

  • 本文向大家介绍Python实现接受任意个数参数的函数方法,包括了Python实现接受任意个数参数的函数方法的使用技巧和注意事项,需要的朋友参考一下 这个功能倒也不是我多么急需的功能,只是恰好看到了,觉得或许以后会用的到。功能就是实现函数能够接受不同数目的参数。 其实,在C语言中这个功能是熟悉的,虽说实现的形式不太一样。C语言中的main函数是可以实现类似的功能的,可以通过这种方式实现一个支持命令行

  • 我一直在和一个朋友练习面试问题,他把他编的这道题扔给我: 给定一个方法来告诉您一个字符串是否有效,请编写一个方法来获取一个字符串,并返回最长的有效子字符串(而不对字符重新排序)。 > 检查输入字符串 检查的所有子集,使用== 以此类推,直到检查所有长度为1的子集,然后返回false 但不幸的是,我很难理解。 最好的解决方案是在所有子集中进行深度优先的递归迭代,并从那里返回最长的有效字符串吗?