一、关于这个例子的核心思想:
①有些属性,可以简单赋值 ,有些属性,不能简单赋值,需要经过很复杂的内部逻辑处理之后才赋值
②那么,我们通常应该把属性全部修饰成私有的,然后暴露出get和set之类方法来让使用这个类的人去操作对象上的数据
(关于get set IDE可以用Alt+Insert进行操作)
③好处:写这个类的人,可以把内部数据处理逻辑封装起来,增加了类的内聚性,增加了数据逻辑的安全性
④同时,降低了使用者的复杂度

二、关于private
私有的,可以修饰成员变量和成员方法称为私有变量和私有方法。它修饰的成员变量或者方法只能在本类中可以访问,这是一种封装思想的体现。

三、关于public
用public修饰的成员变量和方法称为共有变量和共有方法。它具有最大的访问权限,可以访问任何一个在src下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

四、关于LOL游戏案例

package javase.day05.lol;import java.util.ArrayList;/*** 用户的游戏账号(比如: "朕御驾亲征痛杀之") * 用户所在的对局ID(比如: "艾欧尼亚-1001") * 用户所使用的英雄角色(比如:* 易大师或者阿狸或蘑菇....) * 所装配的装备(装备应该可以是多个,比如"无尽之刃"、"狂徒铠甲"等) * 用户助攻数 * 用户击杀人头数 * 斩杀小兵数* 用户的本局游戏实时得分(游戏得分=助攻数*10+击杀人头数*20+小兵数*2+装备件数*5) * 用户的历史累计得分 * 用户的英雄等级:*      [0,20)-->1级*      [20,40) --> 2级*      [40,60) -->3级*      [60 -->4级**/
public class Player {private String account;private String missionId;private String hero;private ArrayList<String> equipments = new ArrayList<>();private int assistants;private int kills;private int killsSoldiers;private int missionScore;private int amountScore;private int heroLevel;public void setAccount(String account) {this.account = account;}public void setMissionId(String setMissionId) {this.missionId = missionId;}public void setHero(String hero) {this.hero = hero;}//每加一件装备用户的英雄当局得分发生变化public void addEquipment(String equipment) {this.equipments.add(equipment);//每增加一件装备,游戏时实得分加5分this.missionScore += 5;//更新英雄的等级this.setHeroLevel();// 累计历史得分也需要 +5分this.amountScore += 5;}//增加助攻数,当调用这个方法助攻数加1public void setAssistants() {this.assistants++;//每增加一个助攻,游戏时实增加10分this.missionScore += 10;//更新英雄的等级this.setHeroLevel();//累计历史得分也需要加10分this.amountScore += 10;}//增加人头数public void addKills() {this.kills++;this.missionScore += 20;//更新英雄的等级this.setHeroLevel();this.amountScore += 20;}//增加补兵数public void addKillSoldier() {this.killsSoldiers++;this.missionScore += 2;//更新英雄的等级this.setHeroLevel();this.amountScore += 2;}//更新英雄的等级的方法private void setHeroLevel() {//更新英雄的等级if (this.missionScore < 20) {this.heroLevel = 1;} else if (this.missionScore < 40) {this.heroLevel = 2;} else if (this.missionScore < 60) {this.heroLevel = 3;} else {this.heroLevel = 4;}}public String getAccount() {return this.account;}public String getMissionId() {return this.missionId;}public String getHero() {return hero;}public ArrayList<String> getEquipments() {return equipments;}public int getAssistants(){return assistants;}public int getKills() {return kills;}public int getKillsSoldiers() {return killsSoldiers;}public int getMissionScore() {return missionScore;}public int getAmountScore() {return amountScore;}public int getHeroLevel() {return heroLevel;}
}
package javase.day05.lol;import java.util.ArrayList;public class PlayerTest {public static void main(String[] args) {//初始化一个英雄数据Player player1 = new Player();//player1.setAccount("狐狸");player1.setHero("剑姬");player1.setMissionId("艾欧尼亚-999");//买装备player1.addEquipment("死亡板甲");//补兵player1.addKillSoldier();//击杀人头player1.addKills();//增加助攻player1.setAssistants();//又买装备player1.addEquipment("电刃");//显示当前击杀的人头数System.out.println("击杀人数"+player1.getKills());System.out.println("助攻次数"+player1.getAssistants());System.out.println("英雄等级"+player1.getHeroLevel());System.out.println("----------------------");//击杀人头数player1.addKills();player1.addKills();//增加助攻player1.setAssistants();player1.setAssistants();//又买装备player1.addEquipment("复活甲");player1.addEquipment("斗篷");System.out.println("击杀人数"+player1.getKills());System.out.println("助攻次数"+player1.getAssistants());System.out.println("英雄等级"+player1.getHeroLevel());}
}

(13)Java中关于面向对象编程——LOL游戏相关推荐

  1. 17、Java中的面向对象的编程思想

    Java中的面向对象的编程思想 作者:韩茹 公司:程序咖(北京)科技有限公司 程序咖:IT职业技能评测平台 网址:https://www.chengxuka.com 任务 1. 面向对象 2. 面向过 ...

  2. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  3. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  4. Java 中的函数式编程

    1. 概述 在本教程中,我们将了解函数式编程范式的核心原则以及如何在 Java 编程语言中使用它们. 我们还将介绍一些高级函数式编程技术.这将帮助我们了解 Java 中的函数式编程的好处. 2. 什么 ...

  5. 在java中三种编程思想(OOA,OOD,OOP)

    在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...

  6. 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  7. 第78节:Java中的网络编程(上)

    第78节:Java中的网络编程(上) 前言 网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节. 网络编程 OSI开放系统互连 网络编程指IO加网络 TCP/IP模型: ...

  8. Java中的多线程编程(超详细总结)

    文章目录 Java中的多线程编程(超详细总结) 一.线程与多线程的概念 二.线程与进程之间的关系 三.一个线程的生命周期 四.多线程的目的和意义 五.线程的实现的方式 Java中的多线程编程(超详细总 ...

  9. JS中的面向对象编程

    JS中的面向对象编程 小课堂 目录 1.背景介绍 2.知识剖析 3.常见问题 4.解决方案 5.编码实战 6.扩展思考 7.参考文献 8.更多讨论 1.背景介绍 什么是对象? ECMA-262把对象定 ...

最新文章

  1. point-to-point(点对点) 网口
  2. pb调用c语言dll,PB调用C#编写的Dll类库
  3. 快速开发一个自定义 Spring Boot Starter ,希望你也会
  4. TCP及socket通信原理详解
  5. python继承属性_Python中的属性继承问题
  6. IO之 随机访问文件(RandomAccessFile)
  7. linux find 拷贝,通过find命令寻找文件并拷贝到一个指定目录方法详解
  8. 按照顺序执行_问一个多线程的问题:如何才能保证线程有序执行?
  9. Nagios 监控平台快速安装
  10. DAS Tool 介绍
  11. 大型网站技术架构(五)--网站高可用架构
  12. MFC显示位图和显示透明位图
  13. a5松下驱动器参数设置表_「精品干货」松下A5伺服驱动器参数设置与常见故障解决分析...
  14. 杂凑算法md5c语言代码,MD5杂凑算法
  15. oppo小布机器人_看这一篇就够了,1分钟带你了解OPPO小布的隐藏玩法!
  16. javax.net.ssl.SSLException 两种解决方法 链接https接口
  17. VCS makefile文件
  18. ubuntu 18.04中的shutter无法编辑截图
  19. asp mysql查询_asp的 条件查询
  20. 分布式系统之----CAP理论

热门文章

  1. .net 刷新后滚动条不动加MaintainScrollPositionOnPostback=true 兼容gogle问题
  2. 三因素收官战 市场有望“春暖花开”
  3. unity3d 牧师与恶魔
  4. 移动硬盘文件全部变成exe了怎么办?
  5. C++ 使用rand()函数生成随机数
  6. 【并查集】面试题 17.07. 婴儿名字
  7. java 开发多店铺,基于SpringBoot的多店铺商城管理后台
  8. GPFS--Centos7部署实战
  9. Photoshop教程用克隆图章修饰照片
  10. 双击bat脚本运行python脚本,bat出现闪退的解决方法