java是一门面向对象的编程语言,类与对象是其最基本的概念。所谓对象,就是一个个具体的物体,一个人,一台电脑,都是对象。而类,就是对象的一种抽象,是多个对象具有的共性的一种集合,其中包含了属性与方法,就是属于该类的对象所具有的共性。当一个类创建了对象,这个对象就拥有了该类全部的属性,方法。相比于结构化的编程思路,面向对象更适用于人的思维方式。这可能就是java如此流行的原因之一。
一个类在另一个类中不能直接被调用,而是通过创建对象。类也可以继承另一个类,即子类继承父类,子类能继承父类所有的方法和属性,在此之外,子类可以写自己的方法,添加属性,或者重写父类中的方法。继承可以提高代码的重用率,增加代码的结构化。
属性与方法在类中可以被定义成公有或私有,私有则不能在别的类中被直接调用,需要为该方法或属性添加set,get方法。通常定义成私有是为了保护数据,避免其他调用者随意更改。
下面以一个奥特曼与小怪兽,boss之间打斗的例子来说明类与对象的具体用法:
定义一个fight类,用于奥特曼打小怪兽,boss,其中的属性有血量,攻击值,方法是fight,给怪兽,boss减血。
public class Fight {
private String name;
private int blood; //血量
private int power; //攻击
public Fight(String name,int blood,int power){ //构造函数,用于赋初始值
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name //给私有成员增加get,set方法
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
//奥特曼打小怪兽 boss
public void fighter1(Fight2 figh,Fight3 fighter3 )
{
figh.setblood(figh.getblood()-power);
System.out.println(name+"正在攻击"+figh.getname()+" "+
figh.getname()+"血量减少"+power+ "现在血量是"+figh.getblood());
fighter3.setblood(fighter3.getblood()-power);
System.out.println(name+"正在攻击"+fighter3.getname()+" "+fighter3.getname()+"血量减少了"+power+
"现在血量是"+fighter3.getblood());
if(figh.getblood()<=0&&fighter3.getblood()<=0)
{
System.out.println(getname()+"win!");
}
else {
figh.fighter2(this,fighter3);
}
}
}
接下来的Fight2,Fight3类与fight类类似,在此就不再赘述
public class Fight2 {
private String name;
private int blood; //血量
private int power; //攻击
public Fight2(String name,int blood,int power){
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
//小怪兽打奥特曼 小怪兽打boss
public void fighter2(Fight fi,Fight3 fighter3){
int bloodx=fi.getblood();
bloodx=bloodx-power;
fi.setblood(bloodx);
System.out.println(name+"正在攻击"+fi.getname()+" "+
fi.getname()+"血量减少"+power+ "现在血量是"+fi.getblood());
fighter3.setblood(fighter3.getblood()-power);
System.out.println(name+"正在攻击"+fighter3.getname()+" "+fighter3.getname()+"血量减少了"+power+
"现在血量是"+fighter3.getblood());
if(fi.getblood()<=0&&fighter3.getblood()<=0)
{
System.out.println(getname()+"win!");
}
else {
fighter3.fight3(fi,this);
}
}
}
public class Fight3 {
private String name;
private int blood;
private int power;
//赋初值
public Fight3(String name,int blood,int power){
this.name=name;
this.power=power;
this.blood=blood;
}
//访问name
public String getname(){
return this.name;
}
//访问blood
public int getblood(){
return this.blood;
}
//访问攻击者值
public int getpower(){
return this.power;
}
//给blood ,power重新赋值
public void setblood(int bloodvalue){
this.blood=bloodvalue;
}
public void setpower(int powervalue){
this.power=powervalue;
}
public void fight3(Fight fi,Fight2 figh){
//boss打奥特曼
fi.setblood(fi.getblood()-power);
System.out.println(name+"正在攻击"+fi.getname()+" "+
fi.getname()+"血量减少了"+power+
"现在血量是"+fi.getblood());
//boss打小怪兽
figh.setblood(figh.getblood()-power);
System.out.println(name+"正在攻击"+figh.getname()+" "+figh.getname()+"血量减少了"+power+
"现在血量是"+figh.getblood());
if(fi.getblood()<=0&&figh.getblood()<=0){
System.out.println(getname()+" win!");
}
else{
fi.fighter1(figh, this);
}
}
}