7-2的作业,请老师审批
来源:7-2 作业题
qq_aiq款_hnrGLT
2019-07-11 09:24:43
package cc.grgroup.animal;
/*
* 1.抽象父类:
动物(Animal)
属性:昵称(name)、年龄(age)
抽象方法:描述喜好(love)
*/
public abstract class Animal {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public abstract void love();
public Animal(){}
public Animal(String name,int age){
this.setName(name);
this.setAge(age);
}
}
package cc.grgroup.animal;
public class Bear extends Animal implements IAct {
public Bear(){}
public Bear(String name,int age){
super(name,age);
}
@Override
public void skill() {
System.out.println("技能:挽着花篮,打着雨伞,独自走秀!");
}
@Override
public void love() {
System.out.println("爱好:喜欢卖萌");
}
}
package cc.grgroup.animal;
public class Clown implements IAct {
private String name;
private int years;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYears() {
return years;
}
public void setYears(int years) {
this.years = years;
}
public Clown(){}
public Clown(String name,int years ){
this.setName(name);
this.setYears(years);
}
public void dress(){
System.out.println("着装:身穿五彩衣服,头上戴着彩色帽子,脸上化妆夸张彩妆");
}
public void skill() {
System.out.println("技能:脚踩高桥,进行杂技魔术表演");
}
}
package cc.grgroup.animal;
/*
* 表演(IAct)
抽象方法:描述技能(skill)、描述表演(act)
说明: 每个表演者的表演信息是通过调用act()方法输出的
*/
public interface IAct {
public void skill();
}
package cc.grgroup.animal;
/*
* 狮子(Lion)
继承自Animal实现IAct
新增属性:颜色(color)、性别(sex)
*/
public class Lion extends Animal implements IAct {
private String color;
private String sex;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Lion(){}
public Lion(String name,int age,String color,String sex ){
super(name,age);
this.setColor(color);
this.setSex(sex);
}
@Override
public void skill() {
System.out.println("技能:擅长钻火圈");
}
@Override
public void love() {
System.out.println("爱好:喜欢吃各种肉类");
}
}
package cc.grgroup.animal;
public class Monkey extends Animal implements IAct {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Monkey(){}
public Monkey(String name,int age,String type){
super(name,age);
this.setType(type);
}
@Override
public void skill() {
System.out.println("技能:骑独轮车过独木桥!");
}
@Override
public void love() {
System.out.println("爱好:喜欢模仿人的表情!");
}
}
package cc.grgroup.animal;
public class Parrot extends Animal implements IAct {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Parrot(){}
public Parrot(String name,int age,String type){
super(name,age);
this.setType(type);
}
@Override
public void skill() {
System.out.println("技能:边唱歌边跳舞");
}
@Override
public void love() {
System.out.println("爱好:模仿人说话和唱歌!");
}
}
package cc.grgroup.animal;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public void displayMenu(){
System.out.println("**********欢迎来到太阳马戏团*****************");
System.out.println("**********请选择您要观赏节目*****************");
System.out.println(" 1、棕熊");
System.out.println(" 2、狮子");
System.out.println(" 3、猴子");
System.out.println(" 4、鹦鹉");
System.out.println(" 5、小丑");
System.out.println("********************************************");
}
public void isnot(){
System.out.println("**********是否继续观看马戏团0/1*****************");
}
public static void main(String[] args) {
int xh = 0;
int isnot1 = 0,isnot2 = 0,isnot3 = 0,isnot4 = 0,isnot5 = 0;
while (true){
Test t = new Test();
t.displayMenu();
Scanner sc = new Scanner(System.in);
Scanner sc1 = new Scanner(System.in);
try {
xh = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的数据格式有误,不能有非数字!请重新选择需要观看的节目");
continue;
}
switch (xh) {
case 1:
Bear b = new Bear("Bill",1);
System.out.println("表演者:"+b.getName());
System.out.println("年龄:"+b.getAge());
b.skill();
b.love();
t.isnot();
try {
isnot1 = sc1.nextInt();
} catch (Exception e) {
// TODO: handle exception
}
if(isnot1 ==1){
break;
}else{
return;
}
case 2:
Lion c = new Lion("lain",2,"灰色","公狮");
System.out.println("表演者:"+c.getName());
System.out.println("年龄:"+c.getAge());
System.out.println("毛色:"+c.getColor());
System.out.println("性别:"+c.getSex());
c.skill();
c.love();
t.isnot();
isnot2 = sc1.nextInt();
if(isnot2 ==1){
break;
}else{
return;
}
case 3:
Monkey m = new Monkey("Tom",2,"金丝猴");
System.out.println("表演者:"+m.getName());
System.out.println("年龄:"+m.getAge());
System.out.println("品种:"+m.getType());
m.skill();
m.love();
t.isnot();
isnot3 = sc1.nextInt();
if(isnot3 ==1){
break;
}else{
return;
}
case 4:
Parrot p = new Parrot("Lili",2,"八哥");
System.out.println("表演者:"+p.getName());
System.out.println("年龄:"+p.getAge());
System.out.println("品种:"+p.getType());
p.skill();
p.love();
t.isnot();
isnot4 = sc1.nextInt();
if(isnot4 ==1){
break;
}else{
return;
}
case 5:
Clown c1 = new Clown("梁超款",2);
System.out.println("表演者:"+c1.getName());
System.out.println("艺龄:"+c1.getYears());
c1.dress();
c1.skill();
t.isnot();
isnot5 = sc1.nextInt();
if(isnot5 ==1){
break;
}else{
return;
}
default:
System.out.println("您输入的表演序号有误,请输入1-5的表演序号");
break;
}
}
}
}1回答
同学你好,
1、对象的创建建议写在循环外,Scanner对象创建一次即可多次使用。

2、为体现多态,在switch-case分支中再创建实现类的对象。
可以按照如下思路:初始化接口的引用,如:IACT iact=null;然后在case 语句后面将接口引用指向具体实现类的对象,如case 1后的代码为:
one=new Bear("Bill", 1);其次,skill,love,isnot方法的调用写在switch结构的外面,即:
if(one!=null){
one.skill();
one.love();
one.isnot();
}如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题
回答 1
回答 1
回答 1
回答 1
回答 1