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;
		
	}
}


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-02-06 哪里有更多的习题,总感觉要多练习
1S7S1



学这个还是要不看答案才能记住,要多练
public class Item{

	String name;
	int price;
public void print() {
	System.out.print(name);
	System.out.println(price);
}
public static void main(String[]args) {
	
	Item one = new Item();
	one.name = "血瓶";
	one.price = 50;
	Item two = new Item();
	two.name = "草鞋";
	two.price = 300;
	Item three =  new Item();
	three.name = "长剑";
	three.price = 350;
	one.print();
	two.print();
	three.print();
	
}
}

							


1 个答案

qqq111 答案时间:2018-02-09
package com.test; public class Item { String name ; int price ; public static void main(String[] args) { Item i=new Item() ; i.name="血瓶"; i.price=50 ; Item i1=new Item() ; i1.name="草鞋" ; i1.price=30 ; Item i2=new Item() ; i2.name="长剑" ; i2.price=100 ; } }




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





2018-01-18 评论区有提供答案就好了
臭牛芒
没事,随便聊聊




8 个答案

一只勤劳的小码农 答案时间:2018-02-11
PigKnight 答案时间:2018-02-06
自定义一个有参的构造方法。 在main方法中直接实例化。

电死你 答案时间:2018-02-05
public class Item { String name; //姓名 int price; //价格 public static void main(String[] args) { Item blood = new Item(); blood.name = "血瓶"; blood.price = 50; Item Shoes = new Item(); Shoes.name = "草鞋"; Shoes.price = 300; Item blade = new Item(); blade.name = "长剑"; blade.price = 350; } }

摸摸你狗头 答案时间:2018-02-05
m86132917 答案时间:2018-02-04
NewClass xp=new NewClass();//血瓶xp xp.mame="血瓶"; xp.price=50; NewClass cx=new NewClass(); cx.mame="草鞋"; cx.price=300; NewClass cj=new NewClass(); cj.mame="长剑"; cj.price=350;

墨染 答案时间:2018-01-28
楼上代码好像有错哈,后面的应该是 Item cx = new Item(); cx.name="草鞋"; cx.price=300; Item cj = new Item(); cj.name="长剑"; cj.price=350; 应该是复制过来没注意改完整

1208723789 答案时间:2018-01-28
154823294723 答案时间:2018-01-18
package Lol; public class Item { String name; int price; public static void main() { Item xp = new Item(); xp.name="血瓶"; xp.price=50; Item cx = new Item(); xp.name="草鞋"; xp.price=300; Item cj = new Item(); xp.name="长剑"; xp.price=350; } }




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




2017-12-31 主方法main为什么在"创建具体的英雄"前面出现,换句话说为什么"创建具体的英雄"要运行,"创建类"就不用运行呢?
2017-12-24 怎么运行总出错那?
2017-11-27 lol
2017-11-25 我这样写是不是复杂了,有冗余啊
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群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图