JAVA面向对象——多态、抽象类练习

JAVA面向对象——多态、抽象类练习

题目:豆豆家养了两只家禽Poultry:一只鸡Chicken和一只鸭Duck。请再写一个类Master,有一个方cry();

分析:
(1)写一个抽象类Poultry,他里面有属性name,sex,他里面有回来方法back()
(2)写一个类Chicken,继承抽象类Poultry
(3)写一个类Duck,继承抽象类Poultry
(4)再写一个类Master,里面有一个方法cry(),传一个字符串参数进去,如果传入是是小花,就返回小鸡,如果传的是小林,就返回鸭子
(5)写主方法测试MasterTest,里面使用Master对象调cry方法,并对调返回的对象的back方法

代码片段:

//父类:Poultry
public abstract class Poultry {
	String result//写不写都可以
	String name;
	//静态常量:性别
	final static String MAN_SEX="小伙";
	final static String WOMAN_SEX="丫头";
	String sex;
	public abstract String back();
}
//Chicken类:
public class Chicken extends Poultry{
	//重写父类的方法
	@Override
	public String back() {
		return result="名叫"+name+"的小鸡,是个"+sex+",我一叫"+name+",她就屁颠屁颠的跑回来了";
	}
}
//Duck类:
public class Duck extends Poultry {
	//重写父类的方法
	@Override
	public String back() {
		return "名叫"+name+"的小鸭,是一个"+sex+",我一叫"+name+",他就害怕的躲开了";
	}
}
//Master 类:
public class Master {
	Duck d = new Duck();
	Chicken c = new Chicken();
//return 执行后代表这个程序结束  我们可以在测试类 中判断   cry这个方法 是否返回为null 如果为 null 就输入错误
	public Poultry cry(String names){
		if(names.equals("小花")){
			c.name=names;
			c.sex = c.WOMAN_SEX;
			return c;
		}else if(names.equals("小林")){
			d.name=names;
			d.sex = d.MAN_SEX;
			return d;
		}else{
			System.out.println("erro");
		}
		return null;
	}
}

//测试类
import java.util.Scanner;
public class MasterTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入:");
		String names = sc.nextLine();
		Master ma = new Master();
		Poultry p = ma.cry(names);
		if(!names.equals("exit")){
			if(p==null){
				System.out.println("输入错误,请重新输入!");
				main(args);
			}else{
				System.out.println("tips:"+p.back());
				System.out.println("通过!结束请输入 exit");
				main(args);
			}
		}else{
			System.out.println("程序结束!");
		}
	}
}

运行结果图如下:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值