java难题,欢迎各位帮忙 ,谢谢各位大神解难,再次感谢

编写一个接口Animal,接口中定义speek()方法,编写两个实现类Cat和Pig分别实现接口Animal,再编写一个测试类实现对象的类型转换。具体要求如下:

(1)编写Animal接口,接口中定义speak()方法。

(2)Cat类和Pig类分别实现Animal接口的方法,且在Cat类中定义方法catchMouse(),在Pig类中定义方法eat();

(3)编写测试类(类名以姓名拼音加作业序号命名),在测试类中定义一个静态方法action(Animal a),该方法没有返回值,在该方法中分析a,如果a是Cat的实例,则调用它的catchMouse()方法,如果a是Pig的实例,则调用eat()方法;

(4)在测试类的main方法中定义两个Animal对象a1、a2,分别创建Cat和Pig对象对其赋值,调用Animal对象的speak()方法,调用两次静态方法action(分别将a1和a2作为参数进行传递)。

public class Test {
public static void main(String[] args) {
Animal a1 = new Cat();
Animal a2 = new Pig();
a1.speek();
a2.speek();
action(a1);
action(a2);
}
static void action(Animal a){
if(a instanceof Cat){
((Cat) a).catchMouse();
}
if(a instanceof Pig){
((Pig) a).eat();
}
}
}

interface Animal {
void speek();
}

class Cat implements Animal {
@Override
public void speek() {
System.out.println("Cat speek");
}

void catchMouse() {
System.out.println("Cat catch mouse");
}
}

class Pig implements Animal {
@Override
public void speek() {
System.out.println("Pig speek");
}

void eat() {
System.out.println("Pig eat");
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-01
//接口:Animal
public interface Animal {

public abstract void speek();
}

//实现类:Cat
public class Cat implements Animal {

public void speek() {
System.out.println("喵喵喵~");
}

public void catchMouse() {
System.out.println("抓老鼠!");
}
}

//实现类:Pig
public class Pig implements Animal {

public void speek() {
System.out.println("哼哼哼~");
}

public void eat() {
System.out.println("吃东西!");
}
}

//测试类:DemoTest1
public class DemoTest1 {

public static void action(Animal a) {
if(a instanceof Cat) {
((Cat) a).catchMouse();
} else if(a instanceof Pig) {
((Pig) a).eat();
}
}

public static void main(String[] args) {
Animal a1 = new Cat();
Animal a2 = new Pig();
a1.speek();
a2.speek();
DemoTest1.action(a1);
DemoTest1.action(a2);
}
}
相似回答