基于Java语言的面对对象进阶算法练习
主要是对面向对象基础的进一步拓展,对private,static,this等关键字的熟练掌握。
文章目录
- 一,编写一个类Task,代表GTA5的主线任务。
- 1.问题
- 2.代码
- 3.效果截图
- 二,通过类描述R星公司的GTA6开发员
- 1.问题
- 2.代码
- 3.效果图
- 三,通过类描述GTA5三主角, 每个主角对象创建时需要自动生成一个序号值
- 1.问题
- 2.代码
- 3.效果图
一,编写一个类Task,代表GTA5的主线任务。
1.问题
要求:具有属性: 名称(title)、任务序号(num),其中主线任务不能多于69个或者少于0个,否则输出错误信息,并赋予默认值 1。
具有方法: 为各属性设置赋值和取值方法。 say,用来在控制台输出每个主线任务的名称及目前的任务序号
编写测试类 TaskTest 进行测试:为 Task对象的属性赋予初始值,并调 用 Task 对象的 say方法,看看输出是否正确
2.代码
代码如下:
public class TaskTest {public static void main(String[] args) {Task t1 = new Task();t1.setTitle("依计行事");t1.setNum(100); //错误测试t1.say();Task t2 = new Task("谍影重重", 44);t2.say();}
}class Task {private String title; // 名称private int num; // 序号Task() { // 构造方法——无参title = "空";num = 1;}Task(String title, int num) { //有参this.setTitle(title);this.setNum(num);}public String getTitle() { // getter与setter方法return title;}public void setTitle(String title) {this.title = title;}public int getNum() {return num;}public void setNum(int num) {if (num > 69 || num < 0) {System.out.println("任务序号不能多于69或少于0,已自动设置为默认值1");this.num = 1;} else this.num = num;}public void say() { // 输出任务详情System.out.println("任务名:" + this.title);System.out.println("任务序号:" + this.num);System.out.println();}
}
private意译为“私有的”,被private修饰的成员只能在本类中访问。
public意译为“公开的”,其修饰的成员数据或方法对外部可见。
3.效果截图
二,通过类描述R星公司的GTA6开发员
1.问题
- 具有属性: 姓名,年龄,性别,爱好,公司(都是:R星),小组(都是:GTA6制作组)。
2.代码
代码如下:
package StudentDemo;public class StudentDemo {public static void main(String[] args) {Student.company = "R星";Student.subject = "GTA6小组";Student S1 = new Student("张三", 21, "男", "打篮球");Student S2 = new Student("李四", -15, "人妖", "踢足球"); //错误测试Student S3 = new Student("王五", 160, "女", "打排球"); //错误测试S1.say();S2.say();S3.say();System.out.println("-----------修改后----------");S2.setAge(20);S2.setSex("男");S3.setAge(22);S1.say();S2.say();S3.say();}
}class Student {private String name;private int age;private String sex;private String hobby;static String company; //静态成员变量,表示类共有static String subject; //静态成员变量Student() {this.name = "空";this.age = 0;this.sex = "空";this.hobby = "空";}Student(String name, int age, String sex, String hobby) {this.setName(name);this.setAge(age);this.setSex(sex);this.setHobby(hobby);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {if (age < 0 || age > 150) {System.out.println("同学[" + this.name + "]的年龄为[" + age + "],请输入1~150");} else this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {if (sex != "男" && sex != "女") {System.out.println("同学[" + this.name + "]的性别为[" + sex + "],请输入男/女");} else this.sex = sex;}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}public void say() {System.out.println("姓名:" + name);System.out.println("年龄:" + age);System.out.println("性别:" + sex);System.out.println("爱好:" + hobby);System.out.println("公司:" + company);System.out.println("小组:" + subject);System.out.println();}
}
static为静态成员变量,可以直接使用“类名.静态方法名()”调用。表示整个类所共有的。
3.效果图
三,通过类描述GTA5三主角, 每个主角对象创建时需要自动生成一个序号值
1.问题
- 要求:每个主角的序号是不同的, 且是依次递增 1 的
2.代码
代码如下:
package LeadDemo;public class LeadDemo {public static void main(String[] args) {Lead l1 = new Lead("富兰克林", 28);Lead l2 = new Lead("麦可", 48);Lead l3 = new Lead("崔佛", 48);l1.say();l2.say();l3.say();}
}class Lead {private static int count = 0; private String name;private int age;private int ID; //序号{this.ID = ++count;}Lead() {}Lead(String name, int age) {this.setName(name);this.setAge(age);}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 void say() {System.out.println("姓名:" + name);System.out.println("序号:" + ID);System.out.println("年龄:" + age);System.out.println();}
}
注意:
- 构造代码块 每次创建新的对象时均会调用
- 执行顺序:静态代码块>构造代码块>构造方法
3.效果图
基于Java语言的面对对象进阶算法练习相关推荐
- 基于Java语言的一次性动态口令算法TOTP
import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.s ...
- 基于Java语言构建区块链(四)—— 交易(UTXO)
基于Java语言构建区块链(四)-- 交易(UTXO) 2018年03月11日 00:48:01 wangwei_hz 阅读数:909 标签: 区块链比特币 更多 个人分类: 区块链 文章的主要思想和 ...
- 基于Java语言构建区块链(一)—— 基本原型
最终内容请以原文为准:https://wangwei.one/posts/df1... 引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产 ...
- 基于Java语言构建区块链(五)—— 地址(钱包)
基于Java语言构建区块链(五)-- 地址(钱包) 2018年03月25日 18:02:06 wangwei_hz 阅读数:1292更多 个人分类: 区块链bitcoin比特币 文章的主要思想和内容均 ...
- 基于Java语言构建区块链(六)—— 交易(Merkle Tree)
基于Java语言构建区块链(六)-- 交易(Merkle Tree) 2018年04月16日 10:21:35 wangwei_hz 阅读数:480更多 个人分类: 区块链比特币bitcoin 最终内 ...
- 第四十二篇 面对对象进阶
目录 面对对象进阶 * 补充(数据类装饰器:复制类中的数据属性) 一.类的继承 1.什么是继承 2.为什么用继承 3.对象的继承 4.继承与抽象 5.继承的应用 6.对象查找属性的顺序 二.类的派生 ...
- java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程
本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法. 背景技术: 计算机系统和网络的大量普及使用使全球跨入了信息化时代.但是,正由于现代社会中几乎一切都在"计算机化 ...
- 区块链java语言,基于Java语言构建区块链(一)—— 基本原型
引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开 ...
- 平面最近点对问题求解—基于Java语言
平面最近点对问题求解-基于Java语言 1. 问题描述: 本问题来自<编程之美2.11-寻找最近点对>,文中给出了两种解法:暴力解法,分治解法.其中,暴力解法很简单,求出所有点之间的距离并 ...
最新文章
- 登顶Nature | DeepMind用AI首次实现数学领域重大进展,助力科学家证实两大猜想
- 2018-2019-2 网络对抗技术 20165320 Exp4 恶意代码分析
- php怎么删除所有文件夹,用php删除所有文件,文件夹及其子文件夹
- poj2478 Farey Sequence (欧拉函数)
- Cloud for Customer里的使用的一个第三方js库,用于gzip处理
- python获取返回值_python 调用 shell ,获取返回值和返回信息
- 工信部发布《区块链 数据格式规范》标准(PPT全文)
- Elasticsearch(二) ik分词器的安装 以及 自定义分词
- 如何使用Emacs Org模式和Reveal.js创建幻灯片
- 【转】【重要】破除“系统学习”的情结
- 引导页的圆点滑动效果
- ARMam3354linux系统开发,ARM板移植Linux系统启动(四)配置Kernel
- iOS多线程:『GCD』详尽总结
- Error writing to registry key: RegSetValueEx failed; code 5
- 苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制
- 关于微信异常烦人自动生成的聊天记录截图视频
- Apache与文件解析漏洞详解
- MATLAB应用:第二章-基本使用方法
- 港科资讯 | 香港科技大学与Microsoft香港签订AI商学院2.0合作备忘录
- 想要快速爬取整站图片?速进(附完整代码)