关于JAVA接口程序设计
发布网友
发布时间:2022-04-27 04:52
我来回答
共4个回答
热心网友
时间:2022-06-26 12:47
你确定答案是正确的?
我自己的回答,不知道是不是正确答案,而且感觉你的题不全。
水平有限,错误请指正。
个人感觉,这题主要是考察,接口,实现,继承,多态。
(以下放在T.java你可以运行看一下。)
--------------------
interface FlyBehavior {
public void fly();
}
class SubSonicFly implements FlyBehavior {
public void fly() {
System.out.println("亚音速飞行!");
};
}
class SuperSonicFly implements FlyBehavior {
public void fly() {
System.out.println("超音速飞行!"); //此处打错一个,应该是超音速飞行吧
};
}
interface TakeOffBehavior {
public void takeOff();
}
class VerticalTakeOff implements TakeOffBehavior {
public void takeOff() {
System.out.println("垂直起飞!");
};
}
class LongDistanceTakeOff implements TakeOffBehavior {
public void takeOff() {
System.out.println("长距离起飞!");
};
}
abstract class AirCraft { //既然是abstract的了,怎么没有abstract的方法
protected FlyBehavior flyBehavior = new SubSonicFly(); //这里应该考查的是关于多态的知识吧
protected TakeOffBehavior takeOffBehavior = new LongDistanceTakeOff(); //这里也应该考查的是关于多态的知识吧
public abstract void fly(); //就把它设成abstract的吧,反正它也不实现什么,就让子类去做具体实现吧。
public abstract void takeOff(); //把它也设成abstract的吧
}
class Helicopter extends AirCraft {
public Helicopter() {
flyBehavior = new SuperSonicFly(); //这里因为是从父类继承的。所以不用在定义了。
takeOffBehavior = new VerticalTakeOff();
}
@Override
public void fly() { //实现父类的方法
flyBehavior.fly();
}
@Override
public void takeOff() { //实现父类的方法
takeOffBehavior.takeOff();
}
}
public class T{ //在这里,我增加了一个main方法,来观察效果
private static Helicopter he = new Helicopter();
public static void main(String[] args){
he.fly();
he.takeOff();
}
}
热心网友
时间:2022-06-26 12:47
答案有问题吧,能直接new接口?
热心网友
时间:2022-06-26 12:48
你这个明显是错误的!直接就是一把红叉 不信你弄到eclipse里面试下就知道了!
热心网友
时间:2022-06-26 12:49
答案是错的。编绎器不让过。。