how2j.cn

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

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

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

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



7分55秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : 设计英雄这个类   
步骤 2 : 创建具体的英雄   
步骤 3 : 类的第一个字母大写   
步骤 4 : 练习-Item   
步骤 5 : 答案-Item   

步骤 1 :

设计英雄这个类

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

注: 本例用到了3种数据类型 分别是 String(字符串),float(浮点数) int(整数),本章只做简单的使用 ,就不展开了,关于变量知识的详细讲解,将在下个章节展开.
注: 这个类没有主方法,不要试图运行它。 并不是所有的类都是有主方法的。
设计英雄这个类
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 }
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 { }
public class Hero {

}
步骤 4 :

练习-Item

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
设计出物品这种类
类名:Item
物品有如下属性:
名字 name 类型是字符串String
价格 price 类型是整型 int

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

答案-Item

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

2分16秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


注: 创建Item这个类的时候,必须写在一个Item.java的文件里,不可以使用其他文件名,大小写也要保持一致,不能是item.java
public class Item { String name; int price; public static void main(String[] args) { Item potion = new Item(); potion.name= "血瓶"; potion.price =50; Item shoe = new Item(); shoe.name= "草鞋"; shoe.price =300; Item sword = new Item(); sword.name= "长剑"; sword.price =350; } }
public class Item {
	String name;
	int price;
	
	public static void main(String[] args) {
		Item potion = new Item();	
		potion.name= "血瓶";
		potion.price =50;
		
		Item shoe = new Item();	
		shoe.name= "草鞋";
		shoe.price =300;
		
		Item sword = new Item();	
		sword.name= "长剑";
		sword.price =350;
		
	}
}



问答区域    
2017-11-27 lol
丶道可道
老师是什么段位的 带我飞啊




6 个答案

清水浩 答案时间:2017-12-12
设计出物品这种类 类名:Item 物品有如下属性: 名字 name 类型是字符串String 价格 price 类型是整型 int 创建(实例化)3件具体物品 名称 价格 血瓶 50 草鞋 300 长剑 350

13532005023 答案时间:2017-12-11
public class ltem { String name; int price; public static void main(String[] args) { // TODO 自动生成的方法存根 ltem potion = new ltem(); potion.name = "血瓶"; potion.price = 50; //血瓶 ltem shoe = new ltem(); shoe.name = "草鞋"; shoe.price = 50; //草鞋 ltem sword = new ltem(); sword.name = "长剑"; sword.price = 60; //长剑 } }

也不行 答案时间:2017-12-04
天刚刚破晓丶 答案时间:2017-12-02
junxiaoge 答案时间:2017-11-29
老师这样写可以吗?

小辣鸡 答案时间:2017-11-29




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2017-11-25 我这样写是不是复杂了,有冗余啊
wanghao



老师我这样写到底对不对啊
package LOL;
class Hero {
	private String name ;
	private float  hp ;
	private float  fj ;
	private int   moveSpeed ;
	public Hero(){	
	}
	public Hero(String name , float hp , float fj , int moveSpeed ){
		this.name = name ;
		this.hp = hp ;
		this.fj = fj ;
		this.moveSpeed = moveSpeed ;
	}
	public void setName(String name ){
		this.name = name ;
	}
	public void setHp(float hp){
		this.hp = hp ;
	}
	public void setFj(float fj){
		this.fj = fj ;
	}
	public void setMoveSpeed(int moveSpeed){
		this.moveSpeed = moveSpeed ;
	}
	public String getName(){
		return this.name ;
	}
	public float getHp(){
		return this.hp ;
	}
	public float getFj(){
		return this.fj ;
	}
	public int getMoveSpeed(){
		return this.moveSpeed ;
	}
	public String getInfo(){
		return "英       雄:" + this.name +"\n"+
		  	   "血       量:" + this.hp +"\n"+
			   "护       甲:" + this.fj  +"\n"+
		  	   "移动速度:" + this.moveSpeed  ;		
	}
}
public class LolDemo{
	public static void main(String args[]){
		Hero  gailun = new Hero("盖伦",400.78f,37.8f,360);
		System.out.println(gailun.getInfo());
	}
}

							


5 个答案

清水浩 答案时间:2017-12-12
改了一下,前面有误,应为:

有气质的色狼 答案时间:2017-12-11
Guchengchuxue 答案时间:2017-12-07
public class Item { String name; //姓名 int price; //价格 public static void main(String[] args) { Item xueping = new Item(); xueping.name = "血瓶"; xueping.price = 50; Ltem caoxie = new Ltem(); caoxie.name = "草鞋"; caoxie.price = 300; Item changjian =new Item(); changjian.name ="长剑"; changjian.price = 350 } }

Smith 答案时间:2017-12-06
dlwin888 答案时间:2017-11-26




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-11-15 mian 调用的快捷键
2017-11-15 编写问题
2017-11-14 这样写是否也能满足要求
2017-10-22 求助 控制台显示terminated
2017-10-20 作业
2017-10-17 不能进入创建的项目中
2017-10-10 盖伦英文名字出错
2017-10-02 测试类与实体类放在一起也可以吗?
2017-09-29 加了私有标识符就一定写这么多吗?好麻烦啊。
2017-09-19 运行错误。。。。
2017-09-16 =
2017-09-16 关于浮点数
2017-09-14 recovery一直报错。不明白原因
2017-09-05 请问“有new才有对象”这种说法对吗?
2017-08-25 界面出现这个是为什么,要怎么解决
2017-08-05 老师,你英雄属性后面的小数点是什么意思,为啥我不加小数点也可以呢?
2017-08-01 参考
2017-07-21 站长的类图是用什么软件画的?感觉比Visio和Rose清爽多了,跪求。
2017-03-17 作业答案代码
2017-02-24 作业
2017-02-24 老师,作为java程序执行入口的主方法main函数,不可以写在别的普通方法中吧
2017-02-19 打卡
2017-01-02 练习
2016-12-20 代码无错,为啥运行结果是什么都没有啊?
2016-12-02 每次一打“.”的时候,就出现什么数组越界,下面的截图
2016-11-06 类名可以用拼音来表示吗
2016-09-16 不明白一行代码的作用
2016-08-13 新手不明白错在哪了
2016-06-13 描述是否不当
2016-04-16 UML类图的画法
2016-03-16 编写完 才发现类名首字没有大写 请问怎么办
2016-02-14




提问之前请登陆
关于 JAVA 基础-面向对象-类和对象 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 661682521
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图