您的位置:首页 > 编程语言 > Java开发

Java作业-动物声音模拟器(继承)

2017-10-26 17:14 274 查看
目标效果:



原题:





1.Animal类抽象:

public abstract class Animal {

public abstract void cry();
public abstract String getAnimalName();

}


2.Simulator操作类:
public class Simulator {

public void playSound(Animal animal) {        //根据上转型,参数为父类对象Animal,可以不必知道子类是什么对象
System.out.print(animal.getAnimalName()+":");      //操作子类重写的方法
animal.cry();
}
}


3.Dog子类:

public class Dog extends Animal{

@Override
public void cry() {
System.out.println("汪汪汪");      //子类重写父类方法
}

@Override
public String getAnimalName() {
return "小狗";
}

}


4.Cat子类:
public class Cat extends Animal{

@Override
public void cry() {
System.out.println("喵喵喵");
}

@Override
public String getAnimalName() {
return "小猫";
}
}


5.Application主程序类:
public class Application {

public static void main(String[] args) {

Simulator simulator=new Simulator();
simulator.playSound(new Dog());           //创建子类对象并传递
simulator.playSound(new Cat());
}
}


对于继承,我的理解是针对某一系列有共同属性的子类,封装这些属性为一个整体的抽象类,当创建这些子类时,只需要继承父类重写方法,便可以直接使用,若类数目较多,继承优势比较明显。

关于继承的一些优缺点(以我的知识面来说,知道的较少请见谅):
优点:

1.继承简化代码;
2.继承清楚的表示了事物间的层次关系,便于人们对事物的认知和理解;
3.子类可以自动继承父类接口;
缺点:
1.子类父类紧密耦合,子类的实现依赖于父类,缺乏独立性;

知识点:

1.Java不支持多重继承,即子类只能有一个父类;
2.object是所有类的祖先类,如果一个类没有使用extends关键字,则默认继承object类;
3.有些父类成员不能被继承:
(1)private成员;
(2)子类与父类不在同一包中,使用默认访问权限的成员;
(3)构造方法;
4.继承后初始化顺序:父类构造方法-子类构造方法;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: