需求说明 编写猫和鸭类,海豚类以及动物类 ;实现输出各种动物叫声;实现输出各种动物腿的条数
实现数据修改功能 实现抛出异常;
思路分析: 编写modify方法按照输入的信息实例化新的类 编写load方法,把输出动物信息的功能放在此方法中 如果腿的条数不符合客观条件则手动抛出异常 调用此方法时捕捉异常.
Animal.java
package com.cx.Animal;
public class Animal {
private String name;
private int legNum;
public Animal(String name, int legNum) {
this.name = name;
this.legNum = legNum;
}
public int getLegNum() {
return legNum;
}
public void setLegNum(int legNum) throws Exception {
this.legNum = legNum;
}
public void shout(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Cat.java
package com.cx.Animal;
public class Cat extends Animal implements Terrestrial {
public Cat(String name, int legNum) {
super("加菲猫", 4);
this.getName();
this.getLegNum();
}
@Override
public int getLegNum() {
return 4;
}
@Override
public String getName() {
return super.getName();
}
@Override
public void shout() {
System.out.println("喵喵叫...");
}
public void setLegNum(int legNum) throws Exception {
if (legNum == 4) {
this.getLegNum();
}else {
throw new Exception("猫的腿只能是4条");
}
}
}
Dolphin.java
package com.cx.Animal;
public class Dolphin extends Animal{
public Dolphin(String name) {
super("海豚奇奇",0);
this.getName();
}
@Override
public int getLegNum() {
return super.getLegNum();
}
@Override
public String getName() {
return super.getName();
}
@Override
public void shout() {
System.out.println("海豚音...");
}
}
Duck.java
package com.cx.Animal;
public class Duck extends Animal implements Terrestrial {
public void setLegNum(int legNum) {
if(legNum==2) {
this.getLegNum();
}
}
@Override
public String getName() {
return super.getName();
}
public Duck(String name, int legNum) {
super("唐老鸭",2);
this.getName();
this.getLegNum();
}
@Override
public int getLegNum() {
return 2;
}
@Override
public void shout() {
System.out.println("嘎嘎嘎...");
}
}
test类
package com.cx.Animal;
import java.util.Scanner;
public class SpeakTest {
Animal cat = new Cat("加菲猫", 4);
Animal duck = new Duck("唐小鸭", 2);
Animal dolphin = new Dolphin("海豚奇奇");
public void modify() throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("请选择修改(猫、鸭或者海豚)的数据(1,2,3)");
//
switch (input.nextInt()) {
case 1:
System.out.println("猫的名称:");
String name=(input.next());
System.out.println("腿的条数");
cat.setLegNum(input.nextInt());
if (cat instanceof Cat) {
if (cat.getLegNum() != 4) {
throw new Exception("猫的腿只能是4条");
}else {
cat.setName(name);
}
}
break;
case 2:
System.out.println("鸭的名称:");
name=input.next();
System.out.println("腿的条数");
duck.setLegNum(input.nextInt());
if (duck instanceof Duck) {
if (duck.getLegNum() != 2) {
throw new Exception("鸭的腿只能是2条");
}
else {
duck.setName(name);
}
}
break;
case 3:
System.out.println("海豚的名称:");
dolphin.setName(input.next());
break;
default:
System.out.println("请输入1,2,3");
}
}
public void load() {
System.out.println("动物名称 " + "腿的条数 " + "动物叫");
System.out.print(cat.getName() + "t" + cat.getLegNum() + "t" + "t");
cat.shout();
System.out.print(duck.getName() + "t" + duck.getLegNum() + "t" + "t");
duck.shout();
System.out.print(dolphin.getName() + "t" + 0 + "t" + "t");
dolphin.shout();
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
SpeakTest speak = new SpeakTest();
while (true) {
speak.load();
System.out.println("是否要继续修改数据;按0进行修改操作,其他任意数字键退出");
int i = input.nextInt();
if (i == 0) {
try {
speak.modify();
} catch (Exception exception) {
exception.printStackTrace();
}
}else {
break;
}
}
}
}
接口
package com.cx.Animal;
public interface Terrestrial {
int getLegNum();
}



