7月6日:类和对象
1、类与对象的概念:
类:生活中的一类事物。例如:飞机,汽车,电脑等等。
对象:类中特定的某一个。例如:桌子上的那支笔,我的这本书,你这个人等等。
总的来说:
类是泛指在某些方面具有某些相似的属性的所有事物。比如:人(类),交通工具(类)。
对象是特指“类”中的某一个,比如:人(类)中的某一个(你、我、他),电脑(类)中的某一个(我正在使用的这台电脑)
2、类
生活中的类一定是具有某些共同的特征的事物的集合。而这些特征在程序中被定义为属性和方法。
属性和方法就是类在程序中的组成。
3、类的基本格式
public class 类名{
//定义属性的格式
private 数据类型 属性名;
}
类中可定义的访问修饰符有4种:public(公有的),private(私有的),默认的(int...),protected(受保护的)
例如:private String name;
//在类中的属性尽量定义为私有的。
注:因为所有的属性都是私有的。故需要定义一个设置属性值的方法(如下)(从而才可以在类的外面进行赋值属性,调用属性。。)
//方法的格式
public 返回值数据类型 方法名(数据类型 形参名,...){
}
public String setName(String n){
name=n;
}
//赋值属性的方法
public String getName(){
return name;
}
//获取属性的方法
}
注:一个“.java”文件中只写一个类,一个方法中只做一件事
4、实例化对象和调用方法的格式
实例化对象的关键字是:new
格式:
类名 对象名=new 类名();
调用方法的格式:
对象名.方法名(实参或者参数名);
注:
java中只有两种数据类型,
1、基本数据类型(int char等)
2、引用数据类型(多为类名)
5、对象也可作为参数。定义的类也可作为数据类型。多在传参时使用。
例如:
public void teach(student s){
//方法体
}
代码示例:战斗小游戏。
public class Fight{
//创建一个Fight类
//定义属性(特征)
private String name;
private int hp;
//定义方法(行为)
//定义一个设置姓名的方法
public void setName(String n){
name=n;//赋值
//n为形参名
}
//定义一个获取姓名的方法
public String getName(){
return name;
}
//定义一个设置血量的方法
public void setHp(int h){
hp=h;
}
//定义一个获取血量的方法
public int getHp(){
return hp;
}
//定义一个战斗方法
public void fight(Boss b){
System.out.println(b.getName()+"对"+getName()+"造成了10点伤害");
hp-=10;
//b.setHp(b.getHp()-10);
//调用对方血量的方法
}
}
public class Boss{
//创建一个Boss类。
//定义属性(特征)
private String name;
private int hp;
//定义方法(行为)
//定义一个设置姓名的方法
public void setName(String n){
name=n;//赋值
//n为形参名
}
//定义一个获取姓名的方法
public String getName(){
return name;
}
//定义一个设置血量的方法
public void setHp(int h){
hp=h;
}
//定义一个获取血量的方法
public int getHp(){
return hp;
}
//定义一个战斗方法
public void fight(Fight f){
System.out.println(f.getName()+"对"+getName()+"造成了7点伤害");
hp-=7;
//f.setHp(s.getHp()-7);
//调用对方血量的方法
}
}
注:因为类中定义的都是(私有)属性,故需要定义“赋予姓名”“获取姓名”的(公有)方法。
public class Fighting{
//创建管理文件
public static void main(String[] args){
//实例化一个战士的对象
Fight fig=new Fight();
//设置对象的姓名和血量
fig.setName("凌统");
fig.setHp(100);
//实例化一个Boss的对象
Boss bos=new Boss();
//设置对象的姓名和血量
bos.setName("甘宁");
bos.setHp(100);
//调用战斗的方法
while(fig.getHp()>=0&&bos.getHp()>=0){
fig.fight(bos);
bos.fight(fig);
}
if(fig.getHp()<=0){
System.out.println(fig.getName()+"被打败,"+bos.getName()+"胜利");
}else{
System.out.println(bos.getName()+"被打败"+fig.getName()+"胜利");
}
}
}
注:可以在此基础程序上进行进一步的扩展。
1、可以使用随机数函数,使损失的血量随机不确定,使结果不唯一。
2、增加对战的人数,使战斗多样性。(运用类的继承)