首页 > 应用开发 > Java > JAVA基础学习- 类和对象学习笔记
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
)
;
}
}
在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设计几个新的方法:
超神 legendary(),无参数,无返回类型
获取当前的血量 getHp(), 无参数,有float类型的返回值
回-血 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/ ,如需转载,请注明出处,否则将追究法律责任。