JavaSE基础知识分享(三)相关练习题

news/2024/11/19 14:24:53/文章来源:https://www.cnblogs.com/cjybigdatablog/p/18345954

写在前面

大家前面的面向对象部分学的怎么样了,快来看看这些题你能不能快速地写出答案,面向对象在Java中是非常重要的,快来检测你的薄弱点在哪,及时查漏补缺!

使用面向对象思想编写下列题目:

1.使用面向对象的思想,编写自定义描述狗的信息。设定属性包括:品种,年龄,心情,名字;方法包括:叫,跑。
要求:
1)设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
2)限定心情只能有“心情好”和“心情不好”两种情况,如果无效输入进行提示, 默认设置“心情好”。
3)设置构造函数实现对属性赋值
4)叫和跑的方法,需要根据心情好坏,描述不同的行为方式。
5)编写测试类,测试狗类的对象及相关方法(测试数据信息自定义)
运行效果图:

代码参考:

class Dog {private String kind;private int age;private String mod;private String name;public Dog() {}public Dog(String kind, int age, String mod, String name) {this.kind = kind;this.age = age;this.mod = mod(mod);this.name = name;}public String getKind() {return kind;}public void setKind(String kind) {this.kind = kind;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getMod() {return mod;}public void setMod(String mod) {this.mod = mod;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void show() {System.out.println("名字叫" + name + "年龄" + age + "岁的" + kind + "犬" + mod + ",");}private String mod(String mod) {if (mod == null || (!mod.equals("心情很好") && !mod.equals("心情不好"))) {mod = "心情很好";System.out.println("输入信息错误,这只狗狗今天" + mod + "!");}return mod;}public void run() {if (this.mod.equals("心情很好")) {System.out.println("名字叫" + this.name + "的" + this.kind + "犬" + this.mod + ",开心的围着主人身边转");} else if (this.mod.equals("心情不好")) {System.out.println("名字叫" + this.name + "的" + this.kind + "犬" + this.mod + ",伤心的一动不动");}}public void woof() {if (this.mod.equals("心情很好")) {System.out.println("名字叫" + this.name + "的" + this.kind + "犬" + this.mod + ",开心的汪汪叫");} else if (this.mod.equals("心情不好")) {System.out.println("名字叫" + this.name + "的" + this.kind + "犬" + this.mod + ",伤心的呜呜叫");}}
}class Test1 {public static void main(String[] args) {Dog d1 = new Dog("贵宾", 1, "哈哈哈", "甜心");Dog d2 = new Dog("贵宾", 1, "心情很好", "甜心");d2.run();d2.woof();System.out.println("========================================");Dog d3 = new Dog("德国牧羊", 1, "心情不好", "太子");d3.run();d3.woof();System.out.println("========================================");d2.show();d3.show();}
}

2.以面向对象的思想,编写自定义类描述IT从业者。设定属性包括:姓名,年龄,技术方向,工作年限, 工作单位和职务;方法包括:工作。
要求:
1)设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
2)限定 IT 从业人员必须年满 15 岁,无效信息需提示,并设置默认年龄为 15。
3)限定“技术方向”是只读属性(只提供 get 方法)
4)工作方法通过输入参数,接收工作单位和职务,输出个人工作信息
5)编写测试类,测试 IT 从业者类的对象及相关方法(测试数据信息自定义)
运行效果图:

代码参考:

class ItPractitioners {private String name;private int age;private String technicalDirection;private int workYear;private String workplace;private String office;public ItPractitioners() {}public ItPractitioners(String name, int age, int workYear, String technicalDirection) {this.name = name;this.age = age(age);this.workYear = workYear;this.technicalDirection = technicalDirection;}public ItPractitioners(String name, int age, int workYear, String technicalDirection, String workplace, String office) {this.name = name;this.age = age(age);this.workYear = workYear;this.technicalDirection = technicalDirection;this.workplace = workplace;this.office = office;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTechnicalDirection() {return technicalDirection;}private void setTechnicalDirection(String technicalDirection) {this.technicalDirection = technicalDirection;}public int getWorkYear() {return workYear;}public void setWorkYear(int workYear) {this.workYear = workYear;}public String getWorkplace() {return workplace;}public void setWorkplace(String workplace) {this.workplace = workplace;}public String getOffice() {return office;}public void setOffice(String office) {this.office = office;}private int age(int age) {if (age < 15) {System.out.println("年龄信息无效!已修改默认年龄为15");age = 15;}return age;}public void work(String workplace, String office) {System.out.println("姓名:" + this.name);System.out.println("年龄:" + this.age);System.out.println("技术方向:" + this.technicalDirection);System.out.println("工作年限:" + this.workYear);System.out.println("目前就职于:" + workplace);System.out.println("职务是:" + office);}
}class Test2 {public static void main(String[] args) {ItPractitioners i1 = new ItPractitioners("马未龙", 35, 10, "数据库维护");i1.work("腾讯实业", "数据库维护工程师");System.out.println("===========================================");ItPractitioners i2 = new ItPractitioners("张凯", 14, 1, "Java开发");i2.work("鼎盛科技", "Java开发工程师");}
}

3.以面向对象的思想,编写自定义类描述图书信息。设定属性包括:书名,作者,出版社名,价格;方法包括:信息介绍 show()。
要求:
1)设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
2)限定价格必须大于 10,如果无效进行提示
3)限定作者,书名为只读属性
4)设计构造方法实现对属性赋值
5)信息介绍方法描述图书所有信息
6)编写测试类,测试图书类的对象及相关方法(测试数据信息自定)
运行效果图:

代码参考:

class Book {private String bookName;private String author;private String publishingHouse;private double price;public Book() {}public Book(String bookName, String author, String publishingHouse, double price) {this.bookName = bookName;this.author = author;this.publishingHouse = publishingHouse;this.price = price(price);}public String getAuthor() {return author;}private void setAuthor(String author) {this.author = author;}public String getBookName() {return bookName;}private void setBookName(String bookName) {this.bookName = bookName;}public String getPublishingHouse() {return publishingHouse;}public void setPublishingHouse(String publishingHouse) {this.publishingHouse = publishingHouse;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}private double price(double price) {if (price <= 10.0) {System.out.println("该书的价格小于10元,是本无效的书!默认为10元");price = 10.0;}return price;}public void show() {System.out.println("书名:"+this.bookName);System.out.println("作者:"+this.author);System.out.println("出版社:"+this.publishingHouse);System.out.println("价格:"+this.price);}
}class Test3{public static void main(String[] args) {Book b1 = new Book("鹿鼎记","金庸","人民文学出版社",120.0);b1.show();System.out.println("========================================");Book b2 = new Book("绝代双骄","古龙","中国长安出版社",55.5);b2.show();System.out.println("========================================");Book b3 = new Book("鹿鼎记","金庸","人民文学出版社",8.0);b3.show();}
}

4.某公司要开发名为”我爱购物狂”的购物网站,请使用面向对象的思想设计描述商品信息。
要求:
1)分析商品类别和商品详细信息属性和方法,设计商品类别类和商品详细信息类
2)在商品详细信息类中通过属性描述该商品所属类别
3)设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
4)编写测试类,测试商品类别类和商品详细信息类的对象及相关方法(测试数据 信息自定)
5)创建包 info—存放商品类别类和商品详细信息类,创建包 test—存放测试类参考分析思路:
商品类别类:
属性:类别编号,类别名称商品详细信息类:
属性:商品编号,商品名称,所属类别,商品数量(大于 0),商品价格(大于 0),
方法:盘点的方法,描述商品信息。内容包括商品名称,商品数量,商品价格,现在商品总价以及所属类别信息
运行效果图:

代码参考:

public class ProductCategory {private String categoryId;private String categoryName;public ProductCategory() {}public ProductCategory(String categoryName, String categoryId) {this.categoryName = categoryName;this.categoryId = categoryId;}public String getCategoryName() {return categoryName;}public void setCategoryName(String categoryName) {this.categoryName = categoryName;}public String getCategoryId() {return categoryId;}public void setCategoryId(String categoryId) {this.categoryId = categoryId;}public void show(){System.out.println("商品类别ID为:"+categoryId+"  对应的类别为:"+categoryName);}}public class ProductInformation {private String productId;private String productName;private ProductCategory category;private int number;private double price;public ProductInformation() {}public ProductInformation(String productName, ProductCategory category, int number, double price) {this.productName = productName;this.category = category;this.number = number(number);this.price = price(price);}public ProductInformation(String productId, String productName, ProductCategory category, int number, double price) {this.productId = productId;this.productName = productName;this.category = category;this.number = number(number);this.price = price(price);}public String getProductId() {return productId;}public void setProductId(String productId) {this.productId = productId;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public ProductCategory getCategory() {return category;}public void setCategory(ProductCategory category) {this.category = category;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public double getPrice() {return price;}public void setPrice(int price) {this.price = price;}private int number(int number) {if (number < 0) {number = 0;System.out.println("库存数量异常,请联系管理员");}return number;}private double price(double price) {if (price < 0.0) {price = 0.0;System.out.println("输入价格无效!默认为0.0");}return price;}public void show1() {System.out.println("商品id为:" + productId + " 商品名称为:" + productName + " 所属类别为" + category.getCategoryName() + " 商品数量为:" + number + " 商品价格为:" + price);}public void show2() {System.out.println("商品名称:" + productName);System.out.println("所属类别:" + category.getCategoryName());System.out.println("商品售价:" + price);System.out.println("库存数量:" + number);System.out.println("商品总价:" + price * number);}}public class Test {public static void main(String[] args) {ProductCategory pc1 = new ProductCategory("洗发水", "00001");pc1.show();System.out.println("========================================");ProductInformation pi1 = new ProductInformation("潘婷洗发水400ml",pc1,16,40.5);pi1.show1();System.out.println("========================================");pi1.show2();System.out.println("========================================");ProductInformation pi2 = new ProductInformation("蜂花洗发水250ml",pc1,-1,11.5);pi2.show2();}
}

写在最后

之前分享了两个关于测试类的题目,在这里给出参考答案:

/*定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试类Test,进行测试*/
//3.0写法
class Demo {private int a;private int b;public Demo(int a, int b) {this.a = a;this.b = b;}public int getB() {return b;}public void setB(int b) {this.b = b;}public int getA() {return a;}public void setA(int a) {this.a = a;}public int sum() {return a + b;}
}class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入两个整数(以空格分隔):");int a = sc.nextInt();int b = sc.nextInt();Demo d1 = new Demo(a, b);int sum = d1.sum();System.out.println("您输入的两个数的和为:" + sum);}
}/*定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试类Test2,进行测试。*/class Demo2 {private int a;private int b;public Demo2(int b, int a) {this.b = b;this.a = a;}public int getA() {return a;}public void setA(int a) {this.a = a;}public int getB() {return b;}public void setB(int b) {this.b = b;}public int zhouChang() {return 2 * (a + b);}public int mianJi() {return a * b;}
}class Test2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个矩形的长和宽(长和宽都应该是正整数,以空格分隔):");int h = sc.nextInt();int w = sc.nextInt();Demo2 d1 = new Demo2(h, w);int c = d1.zhouChang();int s = d1.mianJi();System.out.println("您输入的矩阵的周长为:" + c + "\n您输入的矩阵的面积为:" + s);}
}

好了,今天的分享到这就结束了,面向对象思想在初学时还是比较难懂的,大家一定要多多练习,查缺补漏,才能把它学好,如果有代码中有问题,欢迎在底下评论留言,代码仅供参考,不代表最终答案!

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

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

相关文章

kali常用配置

用户须知 ❝ 1.免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式用户须知1.免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失…

SqlServer 主从复制错误分析--20598

十年河东,十年河西,莫欺少年穷 学无止境,精益求精 1、在分发服务器执行如下脚本select * from MSsubscriber_infoselect * from MSpublications 2、选择分发数据库-distribution,执行如下脚本 sp_helpsubscriptionerrors IZQY9C2TQSKGS9ZTEST ,DBTEST , DbPiblish ,iZzvz…

容器引擎-Docker

Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级、可移植的、自给自足的容器。Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以…

穿墙神器frp

背景 内网渗透需要 官网 https://github.com/fatedier/frp 当前最新版https://github.com/fatedier/frp/releases/tag/v0.59.0 部署 写两个简单的加入systemctl的脚本create_frps_service.sh #!/bin/bash install_path=$(cd $(dirname $0); pwd) frps_exec=$install_path/frps …

wpf 中的三个 UnhandledException

结构化异常处理 在异常点生成异常的结构体,异常分发 WPF中的三个Excption处理函数AppDomain::UnhandledException 事件属性 UI线程和Thread 实例的异常会触发该事件。Application::DispatcherUnhandledExcetion 事件属性 UI线程异常会触发该事件。如果事件的IsHandle=false,异…

19.python之自定义函数

python之自定义函数 一、函数的介绍 1、函数定义:函数是一个组织好,可重复使用,实现单一或联合的代码段。 2、函数作用:a、降低代码的冗余、b、增加代码的复用性 c、提高程序的拓展性 d、封装 二、python的结构三、函数的使用 1、格式: def 函数名 (变量): 执行语句 函…

洛谷P1480 A/B Problem

4.高精度除以低精度 题目叙述: A/B Problem 题目描述 输入两个整数 \(a,b\),输出它们的商。 输入格式 两行,第一行是被除数,第二行是除数。 输出格式 一行,商的整数部分。 样例 #1 样例输入 #1 10 2样例输出 #1 5提示 \(0\le a\le 10^{5000}\),\(1\le b\le 10^9\)。 代码…

condition字符串匹配问题

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 fs使用dialplan配置文件执行业务流程,condition条件变量的配置是必然会使用的,这里记录一次配置过程中的错误示范。 环境 CentOS 7.9 freeswitch 1.10.7 问题描述 dialplan配置如下,本意是根据通道变量${poolType}的值…

【Harmony Next】七夕前学会创建开屏动画拿下女同事的芳心

【Harmony Next】七夕前学会创建开屏动画拿下女同事的芳心 一个优秀的项目需要一个*格够高的动画来开启,下面教你用三步快速实现鸿蒙应用的开屏动画1.创建窗口 使用windowStage.createSubWindow("splash_window")创建窗口对窗口进行管理,实现加载开屏动画在UIAbili…

获取客户端真实IP

出于安全考虑,近期在处理一个记录用户真实IP的需求。本来以为很简单,后来发现没有本来以为的简单。这里主要备忘下,如果服务器处于端口回流(hairpin NAT),keepalived,nginx之后,如何取得客户端的外网IP。  来自客户端PC的流量路径如上,在这样的拓扑中,在应用服务中取…

获取客户端真实IP备忘

出于安全考虑,近期在处理一个记录用户真实IP的需求。本来以为很简单,后来发现没有本来以为的简单。这里主要备忘下,如果服务器处于端口回流(hairpin NAT),keepalived,nginx之后,如何取得客户端的外网IP。  来自客户端PC的流量路径如上,在这样的拓扑中,在应用服务中取…