抽象的Animal 类
public abstract class Animal {
public abstract void sound();
}
CanFly接口
public interface CanFly {
public void fly();
}
Bird类继承自Animal类,并有属性表示鸟类年龄。并实现父类中的sound方法
使鸟类实现接口Canfly,并实现其中的fly方法,在方法中向控制台打印输出:鸟在飞。。。
public class Bird extends Animal implements CanFly {
private int age;
@Override
public void sound() {
// TODO Auto-generated method stub
System.out.println("bird sound");
}
public void fly() {
// TODO Auto-generated method stub
System.out.println("鸟在飞。。。 ");
}
}
编写飞机类Plane,使飞机类实现接口Canfly,并实现其中的fly方法,在方法中向控制台打印输出:飞机在飞。。。
public class Plane implements CanFly {
public void fly() {
// TODO Auto-generated method stub
System.out.println("飞机在飞。。。 ");
}
}
编写测试类,测试类中有main方法,还有letFly方法,打印输出什么事物在飞方法头部为:public static void letFly(Canfly c)
还有letSound方法,打印输出什么动物在叫,在方法中要判断,这个对象是否是动物,如果是动物才让叫。方法头部为:public static void letSound(Animal a)
在main方法中创建鸟对象和飞机对象,在分别调用letFly和letSound方
public class Test {
public static void letFly(CanFly c)
{
c.fly();
}
public static void letSound(Animal a)
{
a.sound();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Bird b=new Bird();
Test.letFly(b);
Test.letSound(b);
Plane p=new Plane();
Test.letFly(p);
// Test.letSound(p);//飞机没有继承自Animal类所以不能调用该方法
}
}
以上全部按照你要求写的
public abstract class Animal {
abstract void sound();
}
interface CanFly {
public void fly();
}
public class Bird extends Animal implements CanFly {
private int age;
void sound() {
System.out.println("鸟叫");
}
public void fly() {
System.out.println("鸟在飞");
}
}
public class Plane implements CanFly {
public void fly() {
System.out.println("飞机在飞");
}
}
public class Test {
public static void letFly(CanFly c) {
c.fly();
}
public static void letSound(Animal a) {
if (a instanceof Animal) {
a.sound();
}
}
public static void main(String[] args) {
Bird bird = new Bird();
Plane plane = new Plane();
Test.letSound(bird);
Test.letFly(plane);
}
}
运行结果:
鸟叫
飞机在飞