初步接触Java之后,发现Java与C++一个很明显的区别就是C++分面向过程和面向对象两个部分,而Java程序的运行主要基于类和对象的建立。
而对于类和对象,我们可以通过下面的方式认识:
1、现实生活中类和对象
2、Java中的类
3、Java中的对象
4、场景实操
一、现实生活中类和对象
顾名思义,
一个具体的实体、事物就是一个对象,this 杯子,that 书本,都是一个个对象,而不同的对象又对应不同的特征和功能,我们分别用不同的特征和功能去描述和区分它们。
而类,就是具有相同特征(属性)和功能(方法)的对象。
如图汽车设计图(所有的这种汽车)看作一个类,第一第二第三辆汽车就是这个类里的对象:
二、Java中的类
类的创建: 关键字: class
格式: public class 类名{ }
类的属性定义:
格式: public 属性类型 属性名;
类的方法定义:
格式: public 方法返回值类型 方法名(参数类型 参数名,……){
方法体,方法需要执行的内容
}
注意:
1、方法需要使用自己的属性,直接写属性名,不需要加“参数名.”。
2、参数为方法需要使用的外部条件,调用时需要加“参数名.”。
3、这里的public是一种传参方式,其他的还有private、protected涉及到属性方法的调用范围权限,在后续继承的学习中体现得更明显。
4、主方法可以写在任何一个类中,但一般会另新建一个主方法类。
5、类名一般用英文较多,以避免出现乱码及更广泛的使用。
三、Java中的对象
定义了类之后就可以定义类的对象了。
对象的创建: 关键字:new
格式: 类名 对象名 = new 类名();
对象的属性使用:
格式: 对象名.属性名
对象的方法使用:
格式: 对象名.方法名(参数值,……);
通过一个个具体的对象实现类的功能。上述注意事项在这里仍然适用。
四、场景实操
- 模拟一个互相攻击的场景
采用回合制,每次攻击让对方的血量减少攻击方的攻击值,重复,直到某一方的血量小于等于0。输出:战斗的过程、战斗的结果。
先定义一个AMERICAN类:
public class AMERICAN {
//属性
public String name;
public double Blood;
//方法
public double fire(IRON iron){
//攻击过程
iron.Blood-=(int)(Math.random()*8+1);
System.out.println(name+"攻击"+iron.name+","+iron.name+" is "+iron.Blood);
return iron.Blood;
}
}
再定义一个IRON类:
public class IRON {
//属性
public String name;
public double Blood;
//方法
public double fire(AMERICAN American){
//这里类的参数名也可设置为其他,因为这里并不真正调用是个虚值,比如可以(AMERICAN A)
//攻击过程
American.Blood-=(int)(Math.random()*8+1);
System.out.println(name+"攻击"+American.name+","+American.name+" is "+American.Blood);
return American.Blood;
}
}
最后在主函数中定义两个类的对象,再定义比赛结束的条件运行即可。
上面有一个随机数的使用,意为在1-9之间随机取一个整数,
if(Math.random() > 0.5){
//American攻击
American.fire(iron);
}
else{
//iron攻击
iron.fire(American);
}
还可以通过随机数使比赛随机进行攻击。
关于随机数的具体方法会在之后的学习过程中总结出来。