ITPub博客

首页 > 应用开发 > Java > JAVA基础学习- 类和对象学习笔记

JAVA基础学习- 类和对象学习笔记

Java 作者:喝水会长肉 时间:2021-12-10 16:08:51 0 删除 编辑

2.1 类和对象

本章节会引入 面向对象的基本概念 (但是不会深入展开,仅仅是引入深入的学习会在后续的 类和对象以及 接口与继承 中展开)。

相信你肯定玩过DOTA或者LOL,没玩过,也一定听说过身边有很多的朋友在玩这款游戏的。

假设,我们要设计一个LOL这样的游戏,使用 面向对象的思想来设计,应该怎么做?

  • 设计英雄这个类

LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女。所有这些英雄, 都有一些共同的状态,比如,他们都有名字,hp,护甲,移动速度等等。这样我们就可以设计一种东西, 叫做类,代表英雄这样一种事物。

类: 英雄(Hero) 状态: 名字, 血量,护甲,移动速度


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

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

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


public 
class 
Item 
{

   String name ;
   int price ;

    public static void main ( String [ ] args ) {
       Item bottom = new Item ( ) ;
       bottom .name = "血瓶" ;
       bottom .price = 50 ;

       Item shoes = new Item ( ) ;
       shoes .name = "草鞋" ;
       shoes .price = 300 ;

       Item sword = new Item ( ) ;
       shoes .name = "长剑" ;
       shoes .price = 350 ;
    }
}


2.2 属性

一个英雄有姓名,血量,护甲等等状态;这些 状态就叫做一个类的 属性。

  • 属性的类型

属性的类型可以是 基本类型,比如int整数,float 浮点数;也可以是类类型,比如String 字符串。

  • 属性名称

属性名称一般来说,都是小写:比如name。 如果有多个单词组成,后面的单词的第一个字母大写:比如 moveSpeed。


public 
class 
Hero 
{

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


  • 练习-属性

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


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 ;
        if (hp > 100 ) {
           hp = 100 ;
        }
    }

    void method1 ( int i ) {
       System .out . println (i ) ;
    }
//java学习交流:737251827  进入可领取学习资源及对十年开发经验大佬提问,免费解答!
    public static void main ( String [ ] args ) {
       Hero garen = new Hero ( ) ;
       garen .name = "盖伦" ;
       garen .hp = 616.28f ;
       garen .armor = 27.536f ;
       garen .moveSpeed = 350 ;
       garen . addSpeed ( 100 ) ;

       Hero teemo = new Hero ( ) ;
       teemo .name = "提莫" ;
       teemo .hp = 383f ;
       teemo .armor = 14f ;
       teemo .moveSpeed = 330 ;

        new Hero ( ) . method1 ( 5 ) ;
    }
}


2.3 方法

在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友;能做什么在类里面就叫做方法。

  • 什么是方法

比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉; 这就是坑队友 每个英雄。。。。都可以 坑。所以为Hero这个类,设计一个方法: keng。


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

    //坑队友
    void keng ( ) {
       System .out . println ( "坑队友!" ) ;
    }
}

  • 方法返回类型

有的方法是有返回类型的;

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

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


public 
class 
Hero 
{

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

    //获取护甲值
   float getArmor ( ) {
        return armor ;
    }

    //坑队友
    void keng ( ) {
       System .out . println ( "坑队友!" ) ;
    }

}


  • 方法的参数

英雄在一些特定情况下,可以增加移动速度:这样我们就通过 addSpeed这个方法增加移动速度。int speed 叫做 方法的参数,给盖伦增加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。

  • 练习-方法

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

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

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

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

   
//超神函数

    void legendary ( ) {
       System .out . println ( "超神了" ) ;
    }

    //获得血量
   float getHp ( ) {
        return hp ;
    }

    //回-血
    void recovery ( float blood ) {
       hp = hp + blood ;
        if (hp > 100 ) {
           hp = 100 ;
        }
    }




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70010294/viewspace-2847058/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-11-19

  • 博文量
    199
  • 访问量
    86411