9、对象的一对一关系
两个对象的一对一之间的关系:
比如: 一个英雄(Hero)对一个兵器(Weapon)
代码如何表示?
/**
双向一对一:给出英雄能得到英雄所拿兵器,给出兵器也能得到对应英雄
单项一对一:给出英雄能得到英雄所拿兵器,给出兵器得不到对应英雄
*/
public class a
{
public static void main(String[] args)
{
Hero h = new Hero();
Weapon w = new Weapon("青龙偃月刀", 1);
h.setName("关云长");
h.setAge(26);
//现在上面两个对象还没建立关系
h.setWeapon(w);
w.setHero(h);
//现在是双向一对一
//接着新建3个属性,分别是英雄名、年龄、武器、等级
String hero = h.getName();
int age = h.getAge();
//Weapon weapon = h.getWeapon();
//最后输出并换行
System.out.println("我是"+hero+",我"+age+"岁了,我的武器是"+w.getName()+",在武器榜上是"+w.getGrade()+"级");
}
}
//英雄
class Hero
{
private String name;
private int age;
public Hero() //从这里往下7行是构造方法
{}
public Hero(String name, int age)
{
this.name = name;
this.age = age;
}
//让英雄与武器连接:
private Weapon weapon;
public void setWeapon(Weapon weapon)
{
this.weapon = weapon;
}
public Weapon getWeapon() //这段代码(41~50)就是给英雄分配的武器,实际上就是给Hero添加一个属性而已
{
return weapon;
}
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
//兵器
class Weapon
{
private String name;
private int grade; //兵器的等级
public Weapon() //从这里往下7行是构造方法
{}
public Weapon(String name, int grade)
{
this.name = name;
this.grade = grade;
}
//让武器与英雄连接:
private Hero hero;
public void setHero(Hero hero)
{
this.hero = hero;
}
public Hero getHero() //这段代码(85~94)就是给武器分配英雄
{
return hero;
}
public void setName(String name)
{
this.name = name;
}
public void setGrade(int grade)
{
this.grade = grade;
}
public String getName()
{
return name;
}
public int getGrade()
{
return grade;
}
}