Java多态练习2

news2024/11/20 2:25:01

设计金融产品类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);
    @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 = scanner.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()));
    }

}

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);
    @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 = scanner.nextDouble();
        if(this.price<super.getFlauchMoney()){
            System.out.println("投资失败!");
        }
        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()));
    }

}

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.coloradmin.cn/o/1572932.html

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

相关文章

【JAVASE】带你了解面向对象三大特性之一(继承)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 1.继承 1.1 为什么需要继承 Java 中使用类对现实世界中实体来…

牛客网BC-125 序列中整数去重复(难题讲解)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 题目讲解&#xff08;思路&#xff09; -------------------------------------------------------------------------------…

爱上数据结构:二叉树的基本概念

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;数据结构 ​ 一、树的基本概念 1.概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起…

机器学习 - multi-class 数据集训练 (含代码)

直接上代码 # Multi-class datasetimport numpy as np RANDOM_SEED 42 np.random.seed(RANDOM_SEED) N 100 # number of points per class D 2 # dimensionality K 3 # number of classes X np.zeros((N*K, D)) y np.zeros(N*K, dtypeuint8) for j in range(K):ix rang…

cJSON(API的详细使用教程)

我们今天来学习一般嵌入式的必备库&#xff0c;JSON库 1&#xff0c;json和cJSON 那什么是JSON什么是cJSON&#xff0c;他们之间有什么样的关联呢&#xff0c;让我们一起来探究一下吧。 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&…

tomcat 结构目录

bin 启动&#xff0c;关闭和其他脚本。这些 .sh文件&#xff08;对于Unix系统&#xff09;是这些.bat文件的功能副本&#xff08;对于Windows系统&#xff09;。由于Win32命令行缺少某些功能&#xff0c;因此此处包含一些其他文件。比如说&#xff1a;windows下启动tomcat用的是…

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

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

JAVAEE之Spring Boot日志

1. 日志概述 1.1 学习日志的原因 ⽇志对我们来说并不陌生, 从JavaSE部分, 我们就在使用 System.out.print 来打印日志了. 通过打印日志来发现和定位问题, 或者根据日志来分析程序的运行过程. 在Spring的学习中, 也经常根据控制台的日志来分析和定位问题. 随着项⽬的复杂…

记录Linux系统中vim同时开多个窗口编辑文件

在使用Linux进行文本编辑的时候&#xff0c;通常使用vim编辑器编辑文件&#xff0c;当然啦&#xff0c;vim也可以创建文件&#xff0c;如果只是一个一个创建&#xff0c;只需要vim创建即可&#xff0c;但是如何一次性打开多个窗口编辑呢&#xff1f; 目录 1、目标&#xff1a;…

微信小程序uniapp+vue.js旅游攻略系统9krxx

实现了一个完整的旅游攻略小程序系统&#xff0c;其中主要有用户模块、用户表模块、token表模块、收藏表模块、视频信息模块、视频类型模块、景点资讯模块、门票购买模块、旅游攻略模块、景点信息模块、论坛表模块、视频信息评论表模块、旅游攻略评论表模块、景点信息评论表模块…

python 02字符串

字符串可能是用到最多的数据类型了&#xff0c;所有标准序列操作&#xff08;索引、切片、乘法、成员资格检查、长度、最小值和最大值&#xff09;都适用于字符串 但别忘了字符串是不可变的&#xff0c;因此所有的元素赋值和切片赋值都是非法的。 1.居中效果 默认为空格 可…

搭建电商购物独立站抓取主流电商产品数据的方法:工具+电商数据采集API接口

分享一个抓取数据产品的方法&#xff0c;也是别人给我说的。 想做一个联盟产品相关的网站&#xff0c;然后需要采集电商网站的产品。咨询大佬告诉我&#xff0c;大量级电商商品数据的采集可以接入专业的电商数据采集API接口&#xff0c;也可以用webscrsper&#xff0c;于是乎就…

【Linux】环境基础开发工具使用——vim使用

Linux 软件包管理器 yum 什么是软件包 1.在 Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 . 2.但是这样太麻烦了 , 于是有些人把一些常用的软件提前编译好 , 做成软件包 ( 可以理解成 windows 上的安装程序) 放在一个服务器…

LangChain - Retrieval

LangChain - Retrieval 文章目录 LangChain - Retrieval文件装载机 Document loaders文本分割 Text Splitting文本嵌入模型 Text embedding models向量存储Retrievers索引 APIClassesFunctions 官方文档&#xff1a;https://python.langchain.com/docs/modules/data_connection…

IJKPLAYER源码分析-mediacodec硬解

前言 近期腾出了点时间&#xff0c;拟对IJKPLAYER做更完整的源码分析&#xff0c;并对关键实现细节&#xff0c;作为技术笔记&#xff0c;记录下来。包括Android端硬解码/AudioTrack/OpenSL播放&#xff0c;以及iOS端硬解码/AudioUnit播放&#xff0c;以及OpenGL渲染和Android/…

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件&#xff0c;它基于SMB&#xff08;Server Messa…

使用Element Plus

1. 官网安装 安装 | Element Plus (gitee.io) 安装&#xff1a; npm install element-plus --save 在main.ts中全局注册ElementPlus并使用 //加入element-plus import ElementPlus from element-plus; //加入element-plus样式 import element-plus/dist/index.css; import…

Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘

目录 emlog-文件上传&文件删除 emlog-模板文件上传 emlog-插件文件上传 emlog-任意文件删除 通达OA-文件上传&文件包含 知识点&#xff1a; PHP审计-原生开发-文件上传&文件删除-Emlog PHP审计-原生开发-文件上传&文件包含-通达OA emlog-文件上传&文件…

Unknown redis exception; event execu tor terminated;解决

最近查看服务器日记是不是报发现有台服务器报错&#xff1a; rocessing failed; nested exception is org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: event execu …

Stale Diffusion、Drag Your Noise、PhysReaction、CityGaussian

本文首发于公众号&#xff1a;机器感知 Stale Diffusion、Drag Your Noise、PhysReaction、CityGaussian Drag Your Noise: Interactive Point-based Editing via Diffusion Semantic Propagation Point-based interactive editing serves as an essential tool to compleme…