整体没啥问题,有几处需要改:
江永网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司成立与2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
1、类名好几处都是小写的,不知道你哪来的代码:
所有string需要改为String
Simulator simulator=new simulator();要改为Simulator simulator=new Simulator();
abstract class animal要改为abstract class Animal
2、另外还要改Simulator类:
class Simulator{
void playSound(Animal animal){
System.out.println("动物名称是:"+"动物.getAnimalName()");
System.out.println("动物叫声是:"+"动物.cry()");
}
}
有两处需要改:
要把"动物.getAnimalName()"改为:animal.getAnimalName()
System.out.println("动物叫声是:"+"动物.cry()");因为cry()方法时void的,所以需要改成这样:
System.out.print("动物叫声是:");
animal.cry();
也就是说Simulator类要整体改为:
class Simulator {
void playSound(Animal animal) {
System.out.println("动物名称是:" + animal.getAnimalName());
System.out.print("动物叫声是:");
animal.cry();
}
}
好了,可以运行了:
改完后的全部代码为:
public class JJ {
public static void main(String[] args) {
Simulator simulator = new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}
abstract class Animal {
abstract void cry();
abstract String getAnimalName();
}
class Dog extends Animal {
void cry() {
System.out.println("汪汪...");
}
String getAnimalName() {
return "Dog";
}
}
class Cat extends Animal {
void cry() {
System.out.println("喵喵...");
}
String getAnimalName() {
return "Cat";
}
}
class Simulator {
void playSound(Animal animal) {
System.out.println("动物名称是:" + animal.getAnimalName());
System.out.print("动物叫声是:");
animal.cry();
}
}
代码老是挤在一起,我截几个图给你康康:
3-15行
16-35行
最后几行,注意这里的变化
这是有一个很典型的关于java 面向对象 继承的使用 ,很简单 先创建一个如animal类,并有个makeVoice()方法,然后instance 这个类 ,如 bird rabit dog cat ect.下面就是继承后分别实现makeVoice() 方法!
抽象类Animal
public abstract interface Animal {
public void Sound();
}
实体类Cat
public class Cat implements Animal {
public void Sound(){
System.out.println("小猫叫:喵喵喵...");
}
}
实体类Dog
public class Dog implements Animal {
public void Sound() {
System.out.println("小狗叫:汪汪汪...");
}
}
测试类AnimalContainer
public class AnimalContainer {
public static void main(String[] args) {
Animal cat = new Cat();
Animal dog = new Dog();
AnimalContainer animalContainer = new AnimalContainer();
animalContainer.animalSpeak(cat);
animalContainer.animalSpeak(dog);
}
void animalSpeak(Animal animal){
animal.Sound();
}
}
抽象的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类所以不能调用该方法
}
}
以上全部按照你要求写的