码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2021-02-18 13:42:55      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:基本概念   很多   static   return   身边   创建   turn   思想   获取   

一、类和对象

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

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

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


步骤1:设计英雄这个类

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

注: 本例用到了3种数据类型 分别是 String(字符串),float(浮点数), int(整数),本章只做简单的使用 ,就不展开了,关于变量知识的详细讲解,将在下个章节展开.
注: 这个类没有主方法,不要试图运行它。 并不是所有的类都是有主方法的。

技术图片

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

步骤2:创建具体的英雄

类就像一个模板,根据这样一个模板,可以创建一个个的具体的英雄
一个个具体的英雄,就叫一个个的对象
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;
    }  
     
}

步骤3:类的第一个字母大写

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

public class Hero {
 
}

二、属性
步骤1:属性的类型

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

其他类型请参考基本类型章节

技术图片

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

步骤2:属性名称

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

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

三、方法

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

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


示例1:什么是方法

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

public class Hero {
    String name; //姓名
      
    float hp; //血量
      
    float armor; //护甲
      
    int moveSpeed; //移动速度
 
    //坑队友
    void keng(){
        System.out.println("坑队友!");
    }
}

示例2:方法返回类型

有的方法是有返回类型的
比如方法:

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("坑队友!");
    }
 
}
示例3:方法的参数

英雄在一些特定情况下,可以增加移动速度
这样我们就通过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);
          
    }
     
}

示例4:方法的命名

方法是一个类的动作行为,所以一般都是以动词开头的,比如 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;
    }
     
}

面向对象

标签:基本概念   很多   static   return   身边   创建   turn   思想   获取   

原文地址:https://www.cnblogs.com/BenZeng/p/14407492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!