Java多态练习2

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

设计金融产品类子类:

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

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

要求:

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

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

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

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

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

package com.jsu.java;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 print(){System.out.println("产品名称为:"+this.getFname()+"\n"+"产品介绍:"+this.getFintroduce()+"\n"+"起投金额:"+this.getFlauchMoney()+"\n"+"产品期限(int):"+this.getFdeadline()+"\n"+"年化收益(百分数):"+this.getFannualized());}public Financial() {}public Financial(String fname, String fintroduce, double flauchMoney, int fdeadline, double fannualized) {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;}public void issue(){}public void abort(){}public void invest(){}
}
package com.jsu.java;import java.util.Scanner;public class Fund extends Financial{private String area;//投资地区private String investor;//投资人private double inMoney;//投资金额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;}public Scanner getScanner() {return scanner;}public void setScanner(Scanner scanner) {this.scanner = scanner;}Scanner scanner = new Scanner(System.in);@Overridepublic void issue() {System.out.println("发布时间为:2021年9月30日 8:00");}@Overridepublic void abort() {System.out.println("截止时间为:2200年9月30日 18:00");}@Overridepublic void invest() {System.out.println("投资");System.out.println("请输入投资金额:");this.inMoney = scanner.nextDouble();if(this.inMoney < super.getFlauchMoney()){System.out.println("起投金额未超过,投资失败");}else{this.print();}}@Overridepublic 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()));}}
package com.jsu.java;import java.util.Scanner;public class Shares extends Financial{private double value;//股票价值private double price;//购买价格private int num;//购买笔数public Shares() {}public Shares(double value, double price, int num) {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;}Scanner scanner = new Scanner(System.in);@Overridepublic void issue() {System.out.println("发布时间为:2021年9月30日 9:00");}@Overridepublic void abort() {System.out.println("截止时间为:2021年9月30日 19:00");}@Overridepublic void invest() {System.out.println("投资");System.out.println("请输入投资金额:");this.price = scanner.nextDouble();if(this.price<super.getFlauchMoney()){System.out.println("投资失败!");}if(this.price < super.getFlauchMoney()){System.out.println("起投金额未超过,投资失败");}else{this.print();}}@Overridepublic 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()));}}
package com.jsu;import com.jsu.java.Financial;
import com.jsu.java.Fund;
import com.jsu.java.Shares;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);Financial financial = new Financial("中欧混合","光伏",6000.0,5,0.01);String witch = null;financial.print();while(true){System.out.println("输入你要购买产品:");witch = scanner.next();financial = choice(witch);financial.invest();financial.issue();financial.abort();}}private static Financial choice(String witch) {Financial financial = null;if("基金产品".equals(witch)){financial = new Fund("山东","张三",9000.0);}else if("股票产品".equals(witch)){financial = new Shares(1000.0,5000.0,10);}else {System.out.println("输入错误,没有该产品");financial = new Financial();}return financial;}
}

Fund结果展示:
在这里插入图片描述
Share结果展示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/796168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins (三) - 拉取编译

Jenkins (三) - 拉取编译 通过Jenkins平台 git 拉取github上项目&#xff0c;通过maven编译并打包。 Jenkins 安装 git 插件 Manager Jenkins -> Plugins -> Available plugins -> Git 打包编译检验 FressStyle 风格编译 New Item输入 item name Spring-Cloud-1…

LeetCode---127双周赛

题目列表 3095. 或值至少 K 的最短子数组 I 3096. 得到更多分数的最少关卡数目 3097. 或值至少为 K 的最短子数组 II 3098. 求出所有子序列的能量和 一、或值至少k的最短子数组I&II 暴力的做法大家都会&#xff0c;这里就不说了&#xff0c;下面我们来看看如何进行优化…

1、快速上手Docker:入门指南

文章目录 Linux中安装docker防火墙端口配置web项目需要的环境安装yarn安装nodejs安装脚手架并准备项目 构建镜像启动镜像查看日志管理镜像推送镜像 发布项目准备服务器环境部署项目&#xff1a; PS&#xff1a;扩展一点小知识 这篇文章只是docker入门的第一个Docker项目&#x…

STM32使用HAL库获取GPS模块HT1818Z3G5L信息(方法1)

1、写在最前 先了解一下GPRMC的格式 格 式&#xff1a; GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,A*50 说 明&#xff1a; 字段 0&#xff1a;$GPRMC&#xff0c;语句ID&#xff0c;表明该语句为Recommended Minimum Specific GPS/TRANSIT Data&…

数据结构|排序总结(1)|直接插入排序

排序分类 插入排序&#xff1a;直接插入排序&#xff0c;希尔排序 选择排序&#xff1a;选择排序&#xff0c;堆排序 交换排序&#xff1a;冒泡排序&#xff0c;快速排序 归并排序 插入排序 直接插入排序 相当于摸牌&#xff0c;例如我们现在手上有{2&#xff0c;4&#xff0…

碘浊度法与红外相机联用测定食品中维生素C

&#x1f31e;欢迎来到看论文的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年4月6日&…

数据库的简单查询

一、检索一列或多列1.检索单独一列 select 列名 from 表名; select order_num from orders; 2.检索多列数据 select 列 1&#xff0c;列 2... from 表名; select order_num,order_date from orders; select order_date,order_num from orders; 3.查询所有字段 select * from…

正排索引 vs 倒排索引 - 搜索引擎具体原理

阅读导航 一、正排索引1. 概念2. 实例 二、倒排索引1. 概念2. 实例 三、正排 VS 倒排1. 正排索引优缺点2. 倒排索引优缺点3. 应用场景 三、搜索引擎原理1. 宏观原理2. 具体原理 一、正排索引 1. 概念 正排索引是一种索引机制&#xff0c;它将文档或数据记录按照某种特定的顺序…

016——DHT11驱动开发(基于I.MX6uLL)

目录 一、 模块介绍 1.1 简介 1.2 电路描述 1.3 通信协议 二、 驱动程序 三、 应用程序 四、 上机实验 一、 模块介绍 1.1 简介 DHT11 是一款可测量温度和湿度的传感器。比如市面上一些空气加湿器&#xff0c;会测量空气中湿度&#xff0c;再根据测量结果决定是否继续加…

Cortex-M7 内存映射模型

1 前言 如图1所示&#xff0c; Cortex-M7最大支持4GB的内存寻址&#xff0c;并对内存映射(memory map)做了初步的规定&#xff0c;将整个内存空间划分为了多个内存区域(region)。每个内存区域有着既定的内存类型(memory type)和内存属性(memory attribute)&#xff0c;这两者决…

物理层习题及其相关知识(谁看谁不迷糊呢)

1. 对于带宽为50k Hz的信道&#xff0c;若有4种不同的物理状态来表示数据&#xff0c;信噪比为20dB 。&#xff08;1&#xff09; 按奈奎斯特定理&#xff0c;信道的最大传输数据速率是多少&#xff1f;&#xff08;2&#xff09; 按香农定理&#xff0c;信道的最大传输数据速度…

基于Springboot+Vue实现前后端分离酒店管理系统

一、&#x1f680;选题背景介绍 &#x1f4da;推荐理由&#xff1a; 近几年来&#xff0c;随着各行各业计算机智能化管理的转型&#xff0c;以及人们经济实力的提升&#xff0c;人们对于酒店住宿的需求不断的提升&#xff0c;用户的增多导致酒店管理信息的不断增多&#xff0c;…

ICLR 2024 | 联邦学习后门攻击的模型关键层

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 联邦学习使多个参与方可以在数据隐私得到保护的情况下训练机器学习模型。但是由于服务器无法…

华为分红出炉,人均超50w!

华为分红 770 亿 4 月 2 日&#xff0c;北京金融资产交易所官网发布了《华为投资控股有限公司关于分配股利的公告》。 公告指出&#xff1a;经公司内部有权机构决议&#xff0c;拟向股东分配股利约 770.945 亿元。 众所周知&#xff0c;华为并不是一家上市公司&#xff0c;这里…

C++从入门到精通——初步认识面向对象及类的引入

初步认识面向对象及类的引入 前言一、面向过程和面向对象初步认识C语言C 二、类的引入C的类名代表什么示例 C与C语言的struct的比较成员函数访问权限继承默认构造函数默认成员初始化结构体大小 总结 前言 面向过程注重任务的流程和控制&#xff0c;适合简单任务和流程固定的场…

自定义实现shell/bash

文章目录 函数和进程之间的相似性shell打印提示符&#xff0c;以及获取用户输入分割用户的输入判断是否是内建命令执行相关的命令 全部代码 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff0c;风趣幽默&#…

Day30 线程安全之窗口售票问题(含代码)

Day30 线程安全之窗口售票问题&#xff08;含代码&#xff09; 一、需求&#xff1a; 铁道部发布了一个售票任务&#xff0c;要求销售1000张票&#xff0c;要求有3个窗口来进行销售&#xff0c; 请编写多线程程序来模拟这个效果&#xff08; 注意&#xff1a;使用线程类的方式…

【Qt 学习笔记】详解Qt中的信号和槽

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 详解Qt中的信号与槽 文章编号&#xff1a;Qt 学习笔记 / 12 文章目录…

红黑树的平衡之道:深入解析右旋操作的原理与实践

红黑树的平衡之道&#xff1a;深入解析右旋操作的原理与实践 一、 红黑树旋转的背景二、右旋&#xff08;RIGHT-ROTATE&#xff09;的原理三、右旋&#xff08;RIGHT-ROTATE&#xff09;的算法步骤四、右旋&#xff08;RIGHT-ROTATE&#xff09;的伪代码五、右旋&#xff08;RI…

ctf_show笔记篇(web入门---jwt)

目录 jwt简介 web345&#xff1a; web346&#xff1a; web347&#xff1a; web348: web349&#xff1a; web350&#xff1a; jwt简介 JSON Web Token&#xff08;JWT&#xff09;通常由三部分组成 Header&#xff08;头部&#xff09;&#xff1a;包含了两部分信息&…