how2j学习笔记2

这篇博客探讨了Java编程中的类和对象概念。首先介绍了如何设计英雄类,包括其属性如名字、血量、护甲和移动速度。接着讨论了如何创建具体的英雄对象,并强调类名首字母大写的编码规范。随后,文章提到了属性的类型、命名规则以及方法的定义,包括返回类型、参数、命名和示例方法。最后,提出了几个额外的练习,鼓励读者为Hero类添加更多属性和方法,如超神状态、血量获取及回血功能。
摘要由CSDN通过智能技术生成

类和对象

设计英雄这个类

比如,他们都有名字,hp,护甲,移动速度等等
这样我们就可以设计一种东西,叫做类,代表英雄这样一种事物
类: 英雄(Hero)
状态: 名字, 血量,护甲,移动速度

注: 本例用到了3种数据类型 分别是 String(字符串),float(浮点数), int(整数)
注: 这个类没有主方法,不要试图运行它。 并不是所有的类都是有主方法的。
在这里插入图片描述


public class Hero {
    String name; //姓名
    float hp; //血量 
    float armor; //护甲
    int moveSpeed; //移动速度
}

创建具体英雄

类就像一个模板,根据这样一个模板,可以创建一个个的具体的英雄
一个个具体的英雄,就叫一个个的对象
new Hero() 就是java中创建一个英雄对象的意思
在这里插入图片描述

public class Hero {
     
    String name; //姓名
     
    float hp; //血量
     
    float armor; //护甲
     
    int moveSpeed; //移动速度
     
    public static void main(String[] args) {
        Hero garen =  new Hero();
        garen.name = "盖伦";
        garen.hp = 616.28f;
        garen.armor = 27.536f;
        garen.moveSpeed = 350;
         
        Hero teemo =  new Hero();
        teemo.name = "提莫";
        teemo.hp = 383f;
        teemo.armor = 14f;
        teemo.moveSpeed = 330;
    }  
     
}

类的第一个字母大写

好的编程习惯会让代码看上去更清爽,易读,容易维护
比如类的第一个字母大写
Hero

练习

设计出物品这种类
类名:Item
物品有如下属性:
名字 name 类型是字符串String
价格 price 类型是整型 int

创建(实例化)3件具体物品
名称 价格
血瓶 50
草鞋 300
长剑 350

package lianxi;

public class item {
	String name;//物品名称
	int price;//物品价格
public static void main(String[] args) {
	item xueping=new item();
	xueping.name="血瓶";
	xueping.price=50;
	
	item caoxie=new item();
	caoxie.name="草鞋";
	caoxie.price=300;
}
}

属性

属性的类型

属性的类型可以是基本类型,比如int整数,float 浮点数
也可以是类类型,比如String 字符串
在这里插入图片描述

public class Hero {
    String name; //姓名
      
    float hp; //血量
      
    float armor; //护甲
      
    int moveSpeed; //移动速度
 
}

属性名称

属性名称一般来说,都是小写
比如name
如果有多个单词组成,后面的单词的第一个字母大写
比如 moveSpeed
属性也是变量,所以需要满足 变量的命名规则

public class Hero {
    String name; //姓名
      
    float hp; //血量
      
    float armor; //护甲
      
    int moveSpeed; //移动速度
 
}

练习

一个英雄可以有名称,血量,护甲,移动速度,还有 其他你想到的,作为新的属性,加入到英雄上面

比如
送了多少次
杀人次数
助攻次数
金钱
补刀数
攻击速度
杀人后说的话
被杀后说的话

public class LOLHero {
     
    String name; //姓名
    String killer; //杀人说话
    String killed; //被杀说话
    int kills; //杀人次数
    int assists; //助攻次数
    int death; //死亡次数
    int killSoldiers; //补刀数
    int money; //金币
    int moveSpeed; //移动速度
    int Crit; //暴击伤害
    int lenth; //攻击距离
    float attackSpeed; //攻击速度
    float physicalAttack; //物理伤害
    float magicAttack; //魔法伤害
    float hp; //血量
    float mp; //蓝量
    float armor; //护甲
    float magicResistance; //魔抗
     
    public static void main(String[] args) {
        LOLHero Yaso = new LOLHero();
        Yaso.name = "疾风剑豪";
        Yaso.killer = "死亡如风,常伴吾身";
        Yaso.killed = "快乐就完事儿了!";
        Yaso.kills = 0;
        Yaso.assists = 0;
        Yaso.death = 18;
        Yaso.killSoldiers = 520;
        Yaso.money = 3600;
        Yaso.moveSpeed = 760;
        Yaso.Crit = 100;
        Yaso.lenth = 360;
        Yaso.attackSpeed = 2.50f;
        Yaso.physicalAttack = 666.6f;
        Yaso.magicAttack = 0f;
        Yaso.hp = 1672f;
        Yaso.mp = 0f;
        Yaso.armor = 78f;
        Yaso.magicResistance = 106f;
    }
}

方法

什么是方法

每个英雄。。。。都可以坑
所以为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; //移动速度
 
    //获取护甲值
    float getArmor(){
        return armor;
    }
 
    //坑队友
    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 Test {
    public static void main(String[] args) {
        //创建英雄对象
        Hero galen = new Hero();
        //给对象赋值
        galen.name = "盖伦";
        galen.hp = 500;
        //调用方法
        galen.legendary();
        galen.getHp();
        galen.recovery(101);
         
    }
}
//英雄类
class Hero{
     
    String name;//英雄名字
    float hp;//英雄血量
     
    //超神方法
    public void legendary(){
        System.out.println(this.name + "超神了!");
    }
    //获取当前血量方法
    public float getHp(){
        System.out.println("当前血量:" + this.hp);
        return hp;
    }
    //回血方法
    public void recovery(float blood){
        System.out.println("本次回复血量:" + blood);
        System.out.println("恢复后血量:" + (this.hp + blood));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值