![](/img/trans.png)
[英]Write a method named isPrime, which takes an integer as an argument and returns true if the argument is a prime number
[英]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.