(1)继承
(2)重写
(3)父类引用指向子类对象(向上转型),子类引用指向父类对象(向下转型)
设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括开店、闭店、购物。
设计店铺类子类:
直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。
加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。
折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。
要求:
1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
2、子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
3、参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
4、手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
5、去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断
6、编写测试类完成相关功能输入和输出
设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。
设计金融产品类子类:
基金产品Fund,继承金融产品类,属性包括投资地区、投资人、投资金额
股票产品Shares,继承金融产品类,属性包括股票价值、购买价格、购买 笔数
要求:
1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
2、子类继承父类时,重写父类发布、截止、投资方法,方法体为输出发布、截止时间。
3、输入购买产品,判断实例化哪个子类对象,初始化父子类属性
4、投资,投资基金产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出基金产品完整信息并计算年化收益。(年化收益=投资金额*期限*年化收益)
5、投资,投资股票产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出股票产品完整信息并计算年化收益。年化收益=投资金额*笔数*期限*年化收益)
6、投资时使用instanceof关键字判断
第一题: package homework; public class Store { public String name; public String address; public int number; public double money; public void openStore() { } public void closeStore() { } public void shop() { } public void information() { } public Store() { super(); } public Store(String name, String address, int number, double money) { this.name = name; this.address = address; this.number = number; this.money = money; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } } package homework; import java.util.Scanner; public class DirectScale extends Store { private String dianZhangName; private int numberWorker; private double sendMoney; private double rate; public void send() { System.out.println("送货"); } public DirectScale() { super(); } @Override public void openStore() { System.out.println("直营店开店五点"); } @Override public void closeStore() { System.out.println("直营店闭店二十一点"); } @Override public void shop() { System.out.println("直营店购物"); System.out.print("请输入您要购买的金额"); Scanner sc=new Scanner(System.in); double num=sc.nextDouble(); if(num>this.sendMoney&&this.numberWorker>0) { System.out.println("您可以在这个直营店购买物品"); numberWorker--; } else { System.out.println("不好意思,您不能在此直营店购买"); } } public void information() { System.out.println("欢迎来到直营店,\n店铺名字是"+super.name+",\n店铺地址是"+super.address+",\n员工人数是"+number+",\n店长名字是"+dianZhangName+",\n起送金额是"+sendMoney); } public DirectScale(String name, String address, int number, double money,String dianZhangName, int numberWorker, double sendMoney, double rate) { super(name, address, number, money); this.dianZhangName = dianZhangName; this.numberWorker = numberWorker; this.sendMoney = sendMoney; this.rate = rate; } } package homework; import java.util.Scanner; public class Franchise extends Store { private String joiner; private double joinMoney; private String time; public void dismiss() { System.out.println("解约"); } @Override public void openStore() { System.out.println("加盟店开店八点"); } @Override public void closeStore() { System.out.println("加盟店闭店二十点"); } @Override public void shop() { System.out.println("加盟店购物"); System.out.print("请输入您加盟金额"); Scanner sc=new Scanner(System.in); double num=sc.nextDouble(); if(num>this.joinMoney) { System.out.println("可以加盟"); } else{ System.out.println("不好意思,您不可以加盟"); } } public void information() { System.out.println("欢迎来到加盟店,\n店铺名字是"+super.name+",\n店铺地址是"+address+",\n员工人数是"+number+",\n加盟商名字是"+joiner+",\n加盟金额是"+joinMoney+",\n加盟时间是"+time); } public String getJoiner() { return joiner; } public void setJoiner(String joiner) { this.joiner = joiner; } public double getJoinMoney() { return joinMoney; } public void setJoinMoney(double joinMoney) { this.joinMoney = joinMoney; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public Franchise(String name, String address, int number, double money,String joiner, double joinMoney, String time) { super(name, address, number, money); this.joiner = joiner; this.joinMoney = joinMoney; this.time = time; } public Franchise() { super(); } } package homework; import java.util.Scanner; public class Discount extends Store { private double maxCount; private double minCount; private boolean isCount; public void Count() { System.out.println("打折"); } @Override public void openStore() { System.out.println("折扣店开店八点"); } @Override public void closeStore() { System.out.println("折扣店闭店二十点"); } @Override public void shop() { System.out.println("折扣店购物"); System.out.print("请输入您要购买的金额"); Scanner sc=new Scanner(System.in); double num=sc.nextDouble(); if(this.isCount) { System.out.println("您好,我们的最大折扣是"+maxCount*num+",最小折扣是"+minCount*num); }else { System.out.println("不好意思,未开始打折活动"); } } public void information() { System.out.println("欢迎来到折扣店,\n店铺名字是"+super.name+",\n店铺地址是"+address+",\n员工人数是"+number+",\n最大折扣是"+maxCount+",\n最小折扣是"+minCount+",\n是否有折扣"+isCount); } public double getMaxCount() { return maxCount; } public void setMaxCount(double maxCount) { this.maxCount = maxCount; } public double getMinCount() { return minCount; } public void setMinCount(double minCount) { this.minCount = minCount; } public boolean isCount() { return isCount; } public void setCount(boolean isCount) { this.isCount = isCount; } public Discount() { super(); } public Discount(String name, String address, int number, double money,double maxCount, double minCount, boolean isCount) { super(name, address, number, money); this.maxCount = maxCount; this.minCount = minCount; this.isCount = isCount; } } package homework; public class Shopping extends Store { public void shopping(Store store) { // Store d=null; if(store instanceof DirectScale) { DirectScale d=(DirectScale) store; d.shop(); }else if(store instanceof Franchise) { Franchise d=(Franchise) store; d.shop(); }else if(store instanceof Discount) { Discount d=(Discount) store; d.shop(); }else { System.out.println("输入店铺信息有误"); } } } package homework; import java.util.Scanner; public class TestStore { public static void main(String[] args) { System.out.print("请输入店铺名称(加盟店,折扣店,直营店)"); Scanner sc=new Scanner(System.in); String str=sc.next(); Store s=dianPu(str); s.information(); System.out.println(); Shopping sho=new Shopping(); sho.shopping(s);; } public static Store dianPu(String str) { Store d=null; if("直营店".equals(str)) { d=new DirectScale("直营店", "上海路", 250, 150000, "二娃", 300, 30,0.45); }else if("加盟店".equals(str)) { d=new Franchise("加盟店", "长春路", 200, 100000, "大娃", 2000.0, "2020-1-19"); }else if("折扣店".equals(str)) { d=new Discount("折扣店", "厦门路", 400, 200000, 0.1, 0.7, true); }else { d=new Store(); } return d; } } 第二题: package homework; public class Financial { protected String name; protected String introduce; protected double investMoney; protected int date; protected double fortune; public void start() { System.out.println("发布时间"); } public void stop() { System.out.println("截止时间"); } public void invest() { System.out.println("投资"); } public Financial(String name, String introduce, double investMoney, int date, double fortune) { this.name = name; this.introduce = introduce; this.investMoney = investMoney; this.date = date; this.fortune = fortune; } public Financial() { super(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIntroduce() { return introduce; } public void setIntroduce(String introduce) { this.introduce = introduce; } public double getInvestMoney() { return investMoney; } public void setInvestMoney(double investMoney) { this.investMoney = investMoney; } public int getDate() { return date; } public void setDate(int date) { this.date = date; } public double getFortune() { return fortune; } public void setFortune(double fortune) { this.fortune = fortune; } } package homework; public class Fund extends Financial { private String investArea; private String investPeople; private double investMoneyDown; public void start() { System.out.println("基金发布时间是2021-9-23"); } public void stop() { System.out.println("基金截止时间是2021-10-23"); } @Override public void invest() { System.out.println("基金投资"); if(investMoneyDown>investMoney) { System.out.println("此基金名称是"+name+",\n基金状态为"+introduce+",\n产品期限是"+date+",\n年化收益是"+fortune+",\n投资地区是"+investArea+",\n投资人是"+investPeople+",\n投资金额是"+investMoneyDown); System.out.println(); System.out.println("年化收益是"+investMoneyDown*date*fortune); }else { System.out.println("投资失败"); } } public Fund() { super(); } public String getInvestArea() { return investArea; } public void setInvestArea(String investArea) { this.investArea = investArea; } public String getInvestPeople() { return investPeople; } public void setInvestPeople(String investPeople) { this.investPeople = investPeople; } public double getInvestMoneyDown() { return investMoneyDown; } public void setInvestMoneyDown(double investMoneyDown) { this.investMoneyDown = investMoneyDown; } public Fund(String name, String introduce, double investMoney, int date, double fortune) { super(name, introduce, investMoney, date, fortune); } public Fund(String name, String introduce, double investMoney, int date, double fortune, String investArea, String investPeople, double investMoneyDown) { super(name, introduce, investMoney, date, fortune); this.investArea = investArea; this.investPeople = investPeople; this.investMoneyDown = investMoneyDown; } } package homework; public class Shares extends Financial { private double sharesValue; private double purchaseMoney; private double purchaseNumber; public void start() { System.out.println("股票发布时间是2021-12-1"); } public void stop() { System.out.println("股票截止时间是2021-12-31"); } @Override public void invest() { System.out.println("股票投资"); if(purchaseMoney>investMoney) { System.out.println("此股票名称是"+name+",\n股票状态为"+introduce+",\n股票期限是"+date+",\n年化收益是"+fortune+",\n股票价值是"+sharesValue+",\n购买价值是"+purchaseMoney+"购买数量是"+purchaseNumber); System.out.println(); System.out.println("年化收益是"+purchaseMoney*date*fortune); }else { System.out.println("投资失败"); } } public Shares(String name, String introduce, double investMoney, int date, double fortune, double sharesValue, double purchaseMoney, double purchaseNumber) { super(name, introduce, investMoney, date, fortune); this.sharesValue = sharesValue; this.purchaseMoney = purchaseMoney; this.purchaseNumber = purchaseNumber; } public Shares() { super(); } public Shares(String name, String introduce, double investMoney, int date, double fortune) { super(name, introduce, investMoney, date, fortune); } public double getSharesValue() { return sharesValue; } public void setSharesValue(double sharesValue) { this.sharesValue = sharesValue; } public double getPurchaseMoney() { return purchaseMoney; } public void setPurchaseMoney(double purchaseMoney) { this.purchaseMoney = purchaseMoney; } public double getPurchaseNumber() { return purchaseNumber; } public void setPurchaseNumber(double purchaseNumber) { this.purchaseNumber = purchaseNumber; } } package homework; public class Purchasing { public void buy(Financial f) { if(f instanceof Fund) { Fund d=(Fund) f; d.invest(); }else if(f instanceof Shares) { Shares d=(Shares) f; d.invest(); }else{ System.out.println("输入产品类型错误"); } } } package homework; import java.util.Scanner; public class TestFinancial { public static void main(String[] args) { System.out.print("请输入购买产品"); Scanner sc=new Scanner(System.in); String str=sc.next(); Financial a=ChanPin(str); Purchasing p=new Purchasing(); p.buy(a); } public static Financial ChanPin(String str) { Financial d=null; if("基金".equals(str)) { d=new Fund("人寿基金", "优", 500, 2, 0.005, "北京", "大娃", 1000); }else if("股票".equals(str)) { d=new Shares("宝泰股票", "中", 300, 3, 0.015, 500.0,400.0,2.0); }else { d=new Financial("父类", "差", 600, 2, 0.001); } return d; } }
原文:https://www.cnblogs.com/lumc5/p/15134813.html