一、根据实例给出"方法"的定义

在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友

能做什么在类里面就叫做方法

比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉。 这就是坑队友

每个英雄。。。。都可以

所以为Hero这个类,设计一个方法: keng

public class Hero {

String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度

//方法:坑队友

 void keng(){

        System.out.println("坑队友!");

    }

}

二、方法返回类型

有的方法是有返回类型的

比如方法:

float getArmor(){

return armor;

}

上面这个方法是用来获取一个英雄有多少护甲的,返回类型是float

有的方法不需要返回值,这个时候就把返回类型设置为void,表示该方法不返回任何值。比如方法 "坑队友"

void keng(){

System.out.println("坑队友!");

}

public class Hero {

String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度

//方法:坑队友

void keng(){

System.out.println("坑队友!");

}

}

三、方法的参数

英雄在一些特定情况下,可以增加移动速度

这样我们就通过addSpeed这个方法增加移动速度

void addSpeed(int speed){

//在原来的基础上增加移动速度

moveSpeed = moveSpeed + speed;

}

int speed 叫做方法的参数

给盖伦增加100的移动速度:

Hero garen =  new Hero();

garen.name = "盖伦";

garen.moveSpeed = 350;

garen.addSpeed(100);

public class Hero {

String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度

//坑队友

void keng(){

System.out.println("坑队友!");

}

//获取护甲值

float getArmor(){

return armor;

}

//增加移动速度

void addSpeed(int speed){

        //在原来的基础上增加移动速度

        moveSpeed = moveSpeed + speed;

    }

public static
void main(String[] args) {

Hero garen =  new Hero();

garen.name = "盖伦";

garen.moveSpeed = 350;

garen.addSpeed(100);

}

}

四、方法的命名

方法是一个类的动作行为,所以一般都是以动词开头的,比如 keng ... 

如果有多个单词,后面的每个单词的第一个字母使用大写

比如 addSpeed

public class Hero {

String name; //姓名

float hp; //血量
    float armor; //护甲

int moveSpeed; //移动速度

//坑队友

void keng(){

System.out.println("坑队友!");

}

//获取护甲值

float getArmor(){

return armor;

}

//增加移动速度

void addSpeed(int speed){

        //在原来的基础上增加移动速度

        moveSpeed = moveSpeed + speed;

    }

}

五、练习及答案

题目:

为英雄类Hero设计几个新的方法:

1. 超神 legendary(),无参数,无返回类型

2. 获取当前的血量 getHp(), 无参数,有float类型的返回值

3. 回血 recovery(float blood), 有参数 float类型参数 blood表示本次恢复的血量,无返回类型

官方答案:

public class Hero {

String name; //姓名

float hp; //血量

float armor; //护甲

int moveSpeed; //移动速度

//坑队友

void keng(){

System.out.println("坑队友!");

}

//获取护甲值

float getArmor(){

return armor;

}

//增加移动速度

void addSpeed(int speed){

//在原来的基础上增加移动速度

moveSpeed = moveSpeed + speed;

}

 //超神

    void legendary(){

        System.out.println("超神了!");

    }

    //获取当前的血量

    float getHp(){

        return hp;

    }

    //回血

    void recovery(float blood){

        hp = hp+blood;

    }

public static
void main(String[] args) {

Hero garen = new Hero();

garen.name= "盖伦";

garen.hp  = 500;

System.out.println(garen.name + " 当前的血量是 " +garen.hp);

System.out.println("回血100");

garen.recovery(100);

System.out.println("现在的血量是:" + garen.hp);

}

}

个人整理答案:

Java知识系统回顾整理01基础02面向对象03方法的更多相关文章

  1. Java知识系统回顾整理01基础02面向对象01类和对象

    一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一 ...

  2. Java知识系统回顾整理01基础02面向对象02属性

    一.根据实例给出"属性"的定义 一个英雄有姓名,血量,护甲等等状态 这些状态就叫做一个类的属性 二.属性的类型 属性的类型可以是基本类型,比如int整数,float 浮点数 也可以 ...

  3. Java知识系统回顾整理01基础06数组03排序

    一.选择法排序 选择法排序的思路: 把第一位和其他所有的进行比较,只要比第一位小的,就换到第一个位置来 比较完后,第一位就是最小的 然后再从第二位和剩余的其他所有进行比较,只要比第二位小,就换到第二个 ...

  4. Java知识系统回顾整理01基础04操作符03逻辑运算符

    一.长路与 和 短路与 无论长路与还是短路与 两边的运算单元都是布尔值 都为真时,才为真 任意为假,就为假 区别 长路与 两侧,都会被运算 短路与 只要第一个是false,第二个就不进行运算了 pub ...

  5. Java知识系统回顾整理01基础01第一个程序02命令行格式编译和执行Java程序

    一.先看运行效果 在控制台下运行第一个Java程序,可以看到输出了字符串 hello world 二.准备项目目录 通常都会在e: 创建一个project目录 在这个例子里,我们用的是e:/proje ...

  6. Java知识系统回顾整理01基础04操作符02关系操作符

    一.关系操作符 关系操作符:比较两个变量之间的关系  > 大于 >= 大于或等于 < 小于 <= 小于或等于 == 是否相等 != 是否不等 public class Hell ...

  7. Java知识系统回顾整理01基础03变量02基本变量类型

    一.变量类型分类 一个变量的类型,决定了该变量可以包含什么样的值. Java中有八种基本类型,都是Java语言预先定义好的,并且是关键字. 这八种基本类型分别是:  整型 (4种) 字符型 (1种) ...

  8. Java知识系统回顾整理01基础05控制流程02 switch

    一.switch switch 语句相当于 if else的另一种表达方式 switch可以使用byte,short,int,char,String,enum 注: 每个表达式结束,都应该有一个bre ...

  9. Java知识系统回顾整理01基础06数组02初始化数组

    一.分配空间与赋值分步进行 分配空间与赋值分步进行 public class HelloWorld { public static void main(String[] args) { int[] a ...

随机推荐

  1. CobaltStrike与Metasploit联动配合

    利用CobaltStrike内置Socks功能 通过Beacon内置的Socks功能在VPS上开启代理端口,打通目标内网通道,之后将本地Metasploit直接带入目标内网,进行横向渗透. 首先,到已 ...

  2. WebStorm下ReactNative代码提示设置

    ReactNative 代码智能提醒  (Webstrom live template) https://github.com/virtoolswebplayer/ReactNative-LiveTe ...

  3. Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)

    You are given nn integer numbers a1,a2,…,ana1,a2,…,an. Consider graph on nn nodes, in which nodes ii ...

  4. Angular(二) - 组件Component

    1. 组件Component示例 2. Component常用的几个选项 3. Component全部的选项 3.1 继承自@Directive装饰器的选项 3.2 @Component自己特有的选项 ...

  5. Vue中父组件使用子组件的emit事件,获取emit事件传出的值并添加父组件额外的参数进行操作

    需求是这样的,需要输入这样一个列表的数据,可以手动添加行,每一行中客户编号跟客户姓名是自动关联的,就是说选取了客户姓名之后,客户编号是自动填充的,客户姓名是一个独立的组件,每一个下拉项都是一个大的对象 ...

  6. C++11中一个使用for+auto时容易发生的bug

    C++11中一个使用for+auto时容易发生的bug 一个小坑,那就是忘记在for循环中使用auto时加引用. 例如: for(auto num : nums){ // do some thing ...

  7. 在微信公众号"码海"里学了一招:在update语句里使用case when 以避免多次更新导致的数据异常.

    需求:将emp表中工资大于一万的降到9成,工资少于一万的乘以1.2. 难点:如果分成两句update执行,在10000附近的值可能会执行两次. 钥匙:在update语句里采用case when,使更新 ...

  8. 同样是logback1.11,更换了log配置后,无论是否有线程持续不断写入log文件,log文件会按设定以日期序号轮换

    上次发现了logback1.11的一个bug,即有线程持续写入log,则log文件不会按设定模式进行轮换. 但发现同样采用logback1.11的另外一个工程,它的日志文件就没有错误,于是参照其配置文 ...

  9. [Java数据结构]Queue

    Queue扩展了Collection,它添加了支持根据先进先出FIFO原则对元素排序的方法. 当对Queue调用add和offer方法时,元素始终添加在Queue的末尾:要检索一个元素,就要使用一个元 ...

  10. Mysql用户权限控制(5.7以上版本)

    1.1. 最简单的MySql权限   最简单也是最高效的,如果解决新手们删库跑路的问题其实也是很简单的,对于正式库只给一个增删改查的权限,或者只给一个查询权限(是不是就解决了删库的可能性?) 使用Ro ...