关于JAVA接口程序设计
interfaceFlyBehavior{publicvoidfly();}classSubSonicFlyimplementsFlyBehavior{publicvoi...
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{
protected _______;
protected _______;
public void fly(){_______;}
public void takeOff(){_______;};
};
class Helicopter _______ AirCraft{
public Helicopter(){
flyBehavior=new ______;
takeOffBehavior=new ______;
}
}
这是2010年上半年的下午最后一题,几个空的答案依次是:
(1)flyBehavior=new FlyBehavior()
(2)takeOffBehavior=new TakeOffBehavior()
(3)flyBehavior.fly()
(4)takeOffBehavior.takeoff()
(5)extends
(6)Aircraft()
(7)Aircraft()
这有我有几个问题:
1、在JAVA里定义接口或类的时候都应该是:接口 对象名=new 接口();但这里第一个空为什么是flyBehavior=new FlyBehavior() ?这里的flyBehavior一直都没有被声明过。
2、第6个空new一个Aircraft()后调用的flyBehavior.fly()到底调用的是哪个fly()方法?
请各位不要直接从别的地方复制文字过来。
看了各位的回答,我也觉得是答案本身就有问题了,开始从来没想过这个答案有错地。 展开
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{
protected _______;
protected _______;
public void fly(){_______;}
public void takeOff(){_______;};
};
class Helicopter _______ AirCraft{
public Helicopter(){
flyBehavior=new ______;
takeOffBehavior=new ______;
}
}
这是2010年上半年的下午最后一题,几个空的答案依次是:
(1)flyBehavior=new FlyBehavior()
(2)takeOffBehavior=new TakeOffBehavior()
(3)flyBehavior.fly()
(4)takeOffBehavior.takeoff()
(5)extends
(6)Aircraft()
(7)Aircraft()
这有我有几个问题:
1、在JAVA里定义接口或类的时候都应该是:接口 对象名=new 接口();但这里第一个空为什么是flyBehavior=new FlyBehavior() ?这里的flyBehavior一直都没有被声明过。
2、第6个空new一个Aircraft()后调用的flyBehavior.fly()到底调用的是哪个fly()方法?
请各位不要直接从别的地方复制文字过来。
看了各位的回答,我也觉得是答案本身就有问题了,开始从来没想过这个答案有错地。 展开
4个回答
展开全部
你确定答案是正确的?
我自己的回答,不知道是不是正确答案,而且感觉你的题不全。
水平有限,错误请指正。
个人感觉,这题主要是考察,接口,实现,继承,多态。
(以下放在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();
}
}
我自己的回答,不知道是不是正确答案,而且感觉你的题不全。
水平有限,错误请指正。
个人感觉,这题主要是考察,接口,实现,继承,多态。
(以下放在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();
}
}
展开全部
答案有问题吧,能直接new接口?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这个明显是错误的!直接就是一把红叉 不信你弄到eclipse里面试下就知道了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案是错的。编绎器不让过。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询