java练习题----------多态

第一题

完成以下题目
要求:
定义一个人类(Person),有吃饭,睡觉,走路3种方法,其中吃饭方法定义为final 方法。
再定义一个银行家类(Banker),继承自人类,有自己的特有方法:投资(invest)。 重写睡觉,走路方法。
编写测试类,在测试类中生成一个人和一个银行家,然后分别调用吃饭,睡觉,走 路方法,以及投资方法。
评分标准:
(7) 正确定义人类(Person)(10分)
(8) 正确定义银行家类(Banker)(10分)
(9) 正确定义编写测试类,并正确输出10分)

package Day0812;

public class demo2 {
	public static void main(String[] args) {
		Person p ;
		p= new Banker();
		p.walk();
		p.eat();
		p.sleep();
//		p.invest();
		
		Person p2 = new Coder();
		p2.walk();
		p2.eat();
		p2.sleep();
	}
}
package Day0812;

public class Person {
	
	public void eat(){
		System.out.println("吃饭");
	}
	public void sleep(){
		System.out.println("睡觉");
	}
	public void walk(){
		
	}

}
package Day0812;

public class Banker extends Person{

	public void invest(){
		System.out.println("投资");
	}

	@Override
	public void walk() {
		System.out.println("银行家在走路");
	}
	
	

}
package Day0812;

public class Coder extends Person{

	@Override
	public void walk() {
		System.out.println("程序员乘火箭");
	}
	public void wc(){
		System.out.println("程序员说我在写代码");
	}
}

第二题

定义一个汽水类Drink,汽水类中有一个味道的方法taste;定义一个可口可乐类,Coco继承自汽水类,重写父类的taste方法,输出“我是可口可乐,我是甜汽水”;定义一个盐汽水类SaltDrink继承自汽水类,重写父类的taste方法,输出“我是盐汽水,我是咸的”;定义一个测试类,提供一个售卖汽水的方法sell,接收用户输入的值,如果是“甜的”,就卖给客户甜的汽水,否则卖给客户咸的汽水

package Day0812pm;

import java.util.Scanner;

public class Test1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入口味:");
		String d = sc.next();
		Drink drink = sell(d);
		drink.taste();
	}

	private static Drink sell(String d) {
		Drink dri = null;
		if("甜的".equals(d)){
			dri = new Coco();
		}else if("咸的".equals(d)){
			dri = new SaltDrink();
		}else{
			System.out.println("输入错误!");
			dri = new Drink();
		}
		return dri;
	}
	
}
package Day0812pm;

public class Drink {
	public void taste(){
		
	}
}
package Day0812pm;

public class Coco extends Drink{

	@Override
	public void taste() {
		System.out.println("我是可口可乐,我是甜汽水!");
	}
}
package Day0812pm;

public class SaltDrink extends Drink{
	@Override
	public void taste() {
		System.out.println("我是盐汽水,我是咸的!");
	}
}

第三题

一、设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括****开店********、********闭店********、********购物********。****

设计店铺类子类:

直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。

加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。

折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。

要求:

1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。

2、子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。

3、参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。

4、手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。

5、去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断(提高)

6、编写测试类完成相关功能输入和输出

package Day0812pm1;

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String t = null;
		Store s1 = new Store("永远滴神","永远滴神大街",65,60000.00);
		s1.print();
		while(true){
			System.out.println("请输入店铺类型:");
			t = sc.next();
			Store s = select(t);
			s.openShop();
			s.closeShop();
			s1.print();
			s.print();
			s.shopping();
		}
		
	}

	private static Store select(String t) {
		Store sr = null;
		if("直营店".equals(t)){
			sr = new DirectSale("张三",12,15.0,0.8);			
		}else if("加盟店".equals(t)){
			sr = new Franchise("李四",5000,"5年");
		}else if("折扣店".equals(t)){
			sr = new Discount(0.95,0.8,true);
			
		}else{
			System.out.println("输入错误!");
			sr = new Store();
		}
		return sr;
	}

}
package Day0812pm1;

public class Store {
	private String shopName;//店铺名称、
	private String shopAddr;//店铺地址、
	private int num;//员工人数、
	private double ReMoney;//注册资金
	
	public void openShop(){
		
	}
	public void closeShop(){
		
	}
	public void shopping(){
		
	}
	public void print(){
		System.out.println("店铺名称为:"+this.getShopName());
		System.out.println("店铺地址为:"+this.getShopAddr());
		System.out.println("员工人数为:"+this.getNum());
		System.out.println("注册资金为:"+this.getReMoney());
	}
	
	public Store() {
		super();
	}
	public Store(String shopName, String shopAddr, int num, double reMoney) {
		super();
		this.shopName = shopName;
		this.shopAddr = shopAddr;
		this.num = num;
		this.ReMoney = reMoney;
	}
	public String getShopName() {
		return shopName;
	}
	public void setShopName(String shopName) {
		this.shopName = shopName;
	}
	public String getShopAddr() {
		return shopAddr;
	}
	public void setShopAddr(String shopAddr) {
		this.shopAddr = shopAddr;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public double getReMoney() {
		return ReMoney;
	}
	public void setReMoney(double reMoney) {
		this.ReMoney = reMoney;
	}
	
	
	
}
package Day0812pm1;

public class Discount extends Store{
	
	private double minDiscount;//、最小折扣
	private double maxDiscount;//最大折扣
	private boolean isNoD;//是否打折
	
	public void discount(){
		if(this.isNoD){
			System.out.println("可以打折");
			System.out.println("最小折扣是:"+this.minDiscount);
			System.out.println("最大折扣为:"+this.maxDiscount);
		}else{
			System.out.println("对不起,未开始打折活动");
		}
	}
	@Override
	public void print(){
		System.out.println("最小折扣是:"+this.minDiscount);
		System.out.println("最大折扣为:"+this.maxDiscount);
		System.out.println("是否打折:"+this.isNoD);
	}

	@Override
	public void openShop() {
		System.out.println("折扣店开店时间:6:00");
		
	}

	@Override
	public void closeShop() {
		System.out.println("折扣店闭店时间:22:00");
		
	}

	@Override
	public void shopping() {
		System.out.println("折扣店购物了");
	}

	public Discount() {
		super();
	}

	

	public Discount(double minDiscount, double maxDiscount, boolean isNoD) {
		super();
		this.minDiscount = minDiscount;
		this.maxDiscount = maxDiscount;
		this.isNoD = isNoD;
	}

	public double getMinDiscount() {
		return minDiscount;
	}

	public void setMinDiscount(double minDiscount) {
		this.minDiscount = minDiscount;
	}

	public double getMaxDiscount() {
		return maxDiscount;
	}

	public void setMaxDiscount(double maxDiscount) {
		this.maxDiscount = maxDiscount;
	}

	public boolean isNoD() {
		return isNoD;
	}

	public void setNoD(boolean isNoD) {
		this.isNoD = isNoD;
	}

	
	

	
}
package Day0812pm1;

import java.util.Scanner;

public class Franchise extends Store{
	static Scanner sc = new Scanner(System.in);
	
	private String busiName;//加盟商姓名、
	private double fMoney;//加盟金额、
	private String ftime;//加盟时间(字符串)
	
	public static void cancel(double fMoney){
		System.out.println("加盟店是否可以加盟,是否解约?");
		System.out.println("请输入你想要加盟的金额:");
		double m = sc.nextDouble();
		if(fMoney>m){
			System.out.println("抱歉,你的加盟费用不够,不能加盟!");
		}else{
			System.out.println("加盟成功!祝贺!!");
		}
	}
	@Override
	public void print(){
		System.out.println("加盟商姓名是:"+this.busiName);
		System.out.println("至少的加盟金额为:"+this.fMoney);
		System.out.println("加盟时间最短为为:"+this.ftime);
	}

	@Override
	public void openShop() {
		System.out.println("加盟店开店时间:7:30");
		
	}

	@Override
	public void closeShop() {
		System.out.println("加盟店闭店时间:21:00");
		
	}

	@Override
	public void shopping() {
		System.out.println("加盟店购物了");
		cancel(this.fMoney);
	}

	public Franchise() {
		super();
	}

	public Franchise(String busiName, double fMoney, String ftime) {
		super();
		this.busiName = busiName;
		this.fMoney = fMoney;
		this.ftime = ftime;
	}

	public String getBusiName() {
		return busiName;
	}

	public void setBusiName(String busiName) {
		this.busiName = busiName;
	}

	public double getfMoney() {
		return fMoney;
	}

	public void setfMoney(double fMoney) {
		this.fMoney = fMoney;
	}

	public String getFtime() {
		return ftime;
	}

	public void setFtime(String ftime) {
		this.ftime = ftime;
	}

	
	

}
package Day0812pm1;

import java.util.Scanner;

public class DirectSale extends Store{
	
	static Scanner sc = new Scanner(System.in);
	
	private String name;//店长姓名
	private int deliveryNum;//送货工人人数
	private double upToMoney;//商品起送金额、
	private double discount;//特殊商品折扣比率
	
	public static void deliver(double upToMoney,int deliveryNum){
		System.out.println("请输入购买的金额:");
		double m = sc.nextDouble();
		if(m < upToMoney){
			System.out.println("你所购买的商品金额不足,不可以配送!");
		}else{
			System.out.println("你购买的商品金额充足,可以配送!");
			if(deliveryNum > 0){
				System.out.println("有骑手空闲,骑手正在为你送货!");
			}else{
				System.out.println("因为骑手人数不够,不能配送!请稍后!");
			}
		}
		
	}
	@Override
	public void openShop() {
		System.out.println("直营店开店时间:8:00");
		
	}

	@Override
	public void closeShop() {
		System.out.println("直营店闭店时间:23:00");
		
	}

	@Override
	public void shopping() {
		System.out.println("直营店购物了");
		deliver(this.getUpToMoney(),this.getDeliveryNum());
	}
	@Override
	public void print(){
		System.out.println("店长姓名是:"+this.name);
		System.out.println("送货工人人数为:"+this.deliveryNum);
		System.out.println("商品起送金额为:"+this.upToMoney);
		System.out.println("特殊商品折扣比率为:"+this.discount);
	}

	public DirectSale() {
		super();
	}

	public DirectSale(String name, int deliveryNum, double upToMoney, double discount) {
		super();
		this.name = name;
		this.deliveryNum = deliveryNum;
		this.upToMoney = upToMoney;
		this.discount = discount;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getDeliveryNum() {
		return deliveryNum;
	}

	public void setDeliveryNum(int deliveryNum) {
		this.deliveryNum = deliveryNum;
	}

	public double getUpToMoney() {
		return upToMoney;
	}

	public void setUpToMoney(double upToMoney) {
		this.upToMoney = upToMoney;
	}

	public double getDiscount() {
		return discount;
	}

	public void setDiscount(double discount) {
		this.discount = discount;
	}
	
	

}

image-20210812204109791

第四题

二、设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。

设计金融产品类子类:

基金产品Fund,继承金融产品类,属性包括投资地区、投资人、投资金额

股票产品Shares,继承金融产品类,属性包括股票价值、购买价格、购买 笔数

要求:

1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。

2、子类继承父类时,重写父类发布、截止、投资方法,方法体为输出发布、截止时间。

3、输入购买产品,判断实例化哪个子类对象,初始化父子类属性

4、投资,投资基金产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出基金产品完整信息并计算年化收益。(年化收益=投资金额期限年化收益)

5、投资,投资股票产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出股票产品完整信息并计算年化收益。年化收益=投资金额笔数期限*年化收益)

6、投资时使用instanceof关键字判断(提高)

package Day0812pm2;

import java.util.Scanner;

import Day0812pm1.DirectSale;
import Day0812pm1.Discount;
import Day0812pm1.Franchise;
import Day0812pm1.Store;

public class test {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String witch = null;
		Financial f = new Financial("中欧混合","光伏",6000.0,5,0.01);
		f.print();
		
		while(true){
			System.out.println("输入你要购买产品:");
			witch = sc.next();
			f = choice(witch);
			f.invest();
			f.issue();
			f.abort();
		}
		

	}

	private static Financial choice(String witch) {
		Financial fc = null;
		if("基金产品".equals(witch)){
			fc = new Fund("山东","张三",9000.0);			
		}else if("股票产品".equals(witch)){
			fc = new Shares(1000.0,5000.0,10);
		}else{
			System.out.println("输入错误!");
			fc = new Financial();
		}
		return fc;
	}

}
package Day0812pm2;

public class Financial {
	private String fname="中欧混合";//产品名称、
	private String fintroduce="光伏";//产品介绍、
	private double flauchMoney=6000.01;//起投金额、
	private int fdeadline=5;//产品期限(int)、
	private double fannualized=0.01;//年化收益(百分数)
	
	public void issue(){
		
	}
	public void abort(){
		
	}
	public void invest(){
		
	}
	public void print(){
		System.out.println("产品名称为:"+this.getFname()
		+"\n"+"产品介绍:"+this.getFintroduce()
		+"\n"+"起投金额:"+this.getFlauchMoney()
		+"\n"+"产品期限(int):"+this.getFdeadline()
		+"\n"+"年化收益(百分数):"+this.getFannualized());
	}
	public Financial() {
		super();
	}
	public Financial(String fname, String fintroduce, double flauchMoney, int fdeadline, double fannualized) {
		super();
		this.fname = fname;
		this.fintroduce = fintroduce;
		this.flauchMoney = flauchMoney;
		this.fdeadline = fdeadline;
		this.fannualized = fannualized;
	}
	public String getFname() {
		return fname;
	}
	public void setFname(String fname) {
		this.fname = fname;
	}
	public String getFintroduce() {
		return fintroduce;
	}
	public void setFintroduce(String fintroduce) {
		this.fintroduce = fintroduce;
	}
	public double getFlauchMoney() {
		return flauchMoney;
	}
	public void setFlauchMoney(double flauchMoney) {
		this.flauchMoney = flauchMoney;
	}
	public int getFdeadline() {
		return fdeadline;
	}
	public void setFdeadline(int fdeadline) {
		this.fdeadline = fdeadline;
	}
	public double getFannualized() {
		return fannualized;
	}
	public void setFannualized(double fannualized) {
		this.fannualized = fannualized;
	}
	
	

}

package Day0812pm2;

import java.util.Scanner;

public class Shares  extends Financial{
	
	private double value;//股票价值、
	private double price;//购买价格、
	private int num;//购买笔数
	static Scanner sc = new Scanner(System.in);

	@Override
	public void issue() {
		System.out.println("发布时间为:2021年9月30日 9:00");
	}

	@Override
	public void abort() {
		System.out.println("截止时间为:2021年9月30日 19:00");
	}

	@Override
	public void invest() {
		System.out.println("投资");
		System.out.println("请输入投资金额:");
		this.price = sc.nextDouble();
		if(this.price < super.getFlauchMoney()){
			System.out.println("起投金额未超过,投资失败");
		}else{
			this.print();
		}
	}
	@Override
	public void print(){
		System.out.println("产品名称为:"+super.getFname()
		+"\n"+"产品介绍:"+super.getFintroduce()
		+"\n"+"起投金额:"+super.getFlauchMoney()
		+"\n"+"产品期限(int):"+super.getFdeadline()
		+"\n"+"年化收益(百分数):"+super.getFannualized());
		System.out.println("股票价值:"+this.getValue()
		+"\n"+"购买价格:"+this.getPrice()
		+"\n"+"购买笔数"+this.getNum());
		System.out.println("年化收益为:"+
				(this.getPrice()*this.getNum()*super.getFdeadline()*this.getFannualized()));
	}

	public Shares() {
		super();
	}

	public Shares(double value, double price, int num) {
		super();
		this.value = value;
		this.price = price;
		this.num = num;
	}

	public double getValue() {
		return value;
	}

	public void setValue(double value) {
		this.value = value;
	}

	public double getPrice() {
		return price;
	}

	public void setPrice(double price) {
		this.price = price;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}
	
	
}
package Day0812pm2;

import java.util.Scanner;

public class Fund extends Financial{
	private String area;//投资地区、
	private String investor;//投资人、
	private double inMoney;//投资金额
	static Scanner sc = new Scanner(System.in);

	@Override
	public void issue() {
		System.out.println("发布时间为:2021年9月30日 8:00");
	}

	@Override
	public void abort() {
		System.out.println("截止时间为:2200年9月30日 18:00");
	}

	@Override
	public void invest() {
		System.out.println("投资");
		System.out.println("请输入投资金额:");
		this.inMoney = sc.nextDouble();
		if(this.inMoney < super.getFlauchMoney()){
			System.out.println("起投金额未超过,投资失败");
		}else{
			this.print();
		}
	}
	@Override
	public void print(){
//		this.invest();
		System.out.println("产品名称为:"+super.getFname()
		+"\n"+"产品介绍:"+super.getFintroduce()
		+"\n"+"起投金额:"+super.getFlauchMoney()
		+"\n"+"产品期限(int):"+super.getFdeadline()
		+"\n"+"年化收益(百分数):"+super.getFannualized());
		System.out.println("投资地区:"+this.getArea()
		+"\n"+"投资人:"+this.getInvestor()
		+"\n"+"投资金额"+this.getInMoney());
		System.out.println("年化收益为:"+
				(this.getInMoney()*super.getFdeadline()*this.getFannualized()));
	}

	public Fund() {
		super();
	}

	public Fund(String area, String investor, double inMoney) {
		super();
		this.area = area;
		this.investor = investor;
		this.inMoney = inMoney;
	}

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

	public String getInvestor() {
		return investor;
	}

	public void setInvestor(String investor) {
		this.investor = investor;
	}

	public double getInMoney() {
		return inMoney;
	}

	public void setInMoney(double inMoney) {
		this.inMoney = inMoney;
	}
	
	

}



"+super.getFannualized());
		System.out.println("投资地区:"+this.getArea()
		+"\n"+"投资人:"+this.getInvestor()
		+"\n"+"投资金额"+this.getInMoney());
		System.out.println("年化收益为:"+
				(this.getInMoney()*super.getFdeadline()*this.getFannualized()));
	}

	public Fund() {
		super();
	}

	public Fund(String area, String investor, double inMoney) {
		super();
		this.area = area;
		this.investor = investor;
		this.inMoney = inMoney;
	}

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

	public String getInvestor() {
		return investor;
	}

	public void setInvestor(String investor) {
		this.investor = investor;
	}

	public double getInMoney() {
		return inMoney;
	}

	public void setInMoney(double inMoney) {
		this.inMoney = inMoney;
	}
	
	

}

image-20210812202700070

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值