主要是对面向对象基础的进一步拓展,对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();}
}

注意:

  1. 构造代码块 每次创建新的对象时均会调用
  2. 执行顺序:静态代码块>构造代码块>构造方法

3.效果图


基于Java语言的面对对象进阶算法练习相关推荐

  1. 基于Java语言的一次性动态口令算法TOTP

    import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.s ...

  2. 基于Java语言构建区块链(四)—— 交易(UTXO)

    基于Java语言构建区块链(四)-- 交易(UTXO) 2018年03月11日 00:48:01 wangwei_hz 阅读数:909 标签: 区块链比特币 更多 个人分类: 区块链 文章的主要思想和 ...

  3. 基于Java语言构建区块链(一)—— 基本原型

    最终内容请以原文为准:https://wangwei.one/posts/df1... 引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产 ...

  4. 基于Java语言构建区块链(五)—— 地址(钱包)

    基于Java语言构建区块链(五)-- 地址(钱包) 2018年03月25日 18:02:06 wangwei_hz 阅读数:1292更多 个人分类: 区块链bitcoin比特币 文章的主要思想和内容均 ...

  5. 基于Java语言构建区块链(六)—— 交易(Merkle Tree)

    基于Java语言构建区块链(六)-- 交易(Merkle Tree) 2018年04月16日 10:21:35 wangwei_hz 阅读数:480更多 个人分类: 区块链比特币bitcoin 最终内 ...

  6. 第四十二篇 面对对象进阶

    目录 面对对象进阶 * 补充(数据类装饰器:复制类中的数据属性) 一.类的继承 1.什么是继承 2.为什么用继承 3.对象的继承 4.继承与抽象 5.继承的应用 6.对象查找属性的顺序 二.类的派生 ...

  7. java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程

    本发明涉及网络通讯领域,特别涉及一种基于Java语言的网络通讯数据包解析方法. 背景技术: 计算机系统和网络的大量普及使用使全球跨入了信息化时代.但是,正由于现代社会中几乎一切都在"计算机化 ...

  8. 区块链java语言,基于Java语言构建区块链(一)—— 基本原型

    引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开 ...

  9. 平面最近点对问题求解—基于Java语言

    平面最近点对问题求解-基于Java语言 1. 问题描述: 本问题来自<编程之美2.11-寻找最近点对>,文中给出了两种解法:暴力解法,分治解法.其中,暴力解法很简单,求出所有点之间的距离并 ...

最新文章

  1. 登顶Nature | DeepMind用AI首次实现数学领域重大进展,助力科学家证实两大猜想
  2. 2018-2019-2 网络对抗技术 20165320 Exp4 恶意代码分析
  3. php怎么删除所有文件夹,用php删除所有文件,文件夹及其子文件夹
  4. poj2478 Farey Sequence (欧拉函数)
  5. Cloud for Customer里的使用的一个第三方js库,用于gzip处理
  6. python获取返回值_python 调用 shell ,获取返回值和返回信息
  7. 工信部发布《区块链 数据格式规范》标准(PPT全文)
  8. Elasticsearch(二) ik分词器的安装 以及 自定义分词
  9. 如何使用Emacs Org模式和Reveal.js创建幻灯片
  10. 【转】【重要】破除“系统学习”的情结
  11. 引导页的圆点滑动效果
  12. ARMam3354linux系统开发,ARM板移植Linux系统启动(四)配置Kernel
  13. iOS多线程:『GCD』详尽总结
  14. Error writing to registry key: RegSetValueEx failed; code 5
  15. 苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制
  16. 关于微信异常烦人自动生成的聊天记录截图视频
  17. Apache与文件解析漏洞详解
  18. MATLAB应用:第二章-基本使用方法
  19. 港科资讯 | 香港科技大学与Microsoft香港签订AI商学院2.0合作备忘录
  20. 想要快速爬取整站图片?速进(附完整代码)

热门文章

  1. 华为平板服务器响应异常,华为平板触摸屏没反应
  2. 前端鼠标形状设置--cursor
  3. 一套资金管理和交易策略规则
  4. Scalable IO in Java(Reactor模式)
  5. 想转行,为什么首选软件测试?
  6. 小程序源码:王者荣耀战力查询微信小程序源码下载支持安卓苹果微信QQ等多区查询-多玩法安装简单
  7. C语言中实用的子函数(持续加料)
  8. estx matlab,自动控制LTI系统的MATLAB辅助.ppt
  9. CSS3实现动画-飞翔的小鸟
  10. 如何构建一个简单的虚拟直播间?虚拟直播间怎么弄?