对象的一对一关系

/**
    对象的一对一关系:双向一对一;单向一对一
*/


public class Test18 {
    public static void main(String[] args) {
        Hero hero = new Hero("刘备",300);
        Weapon weapon = new Weapon("双股剑",3);
        //把两个对象关联起来,双向的
        hero.setWeapon(weapon); //即要调用类里自定义的那个类型的方法
        weapon.setHero(hero);  //即要调用类里自定义的那个类型的方法
        
        //通过英雄来获取其他的信息
        String name = hero.getName();
        int age = hero.getAge();
        Weapon w = hero.getWeapon();  
        /**
        这里定义了w,用的是自定义类型Weapon,那么返回值就是传入的参数,而前面hero.setWeapon(weapon);传入的是自定义类型Weapon的对象,所以这里w就代表了Weapon的对象
        所以w.getName()可以获取到Weapon类的name属性,w.gerGrade()可以获取到Weapon类的grade属性
         */
        System.out.println("hero是:"+name+" "+age+" "+w.getName()+" "+w.getGrade());
    }

}
//英雄类
class Hero{
    private String name;
    private int age;
    
    private Weapon weapon; //和其他类建立关系,就是把其他类作为一个自定义的类型[如int类型]添加进来;然后设置getter and setter方法
    public void setWeapon(Weapon weapon){  //这样只是单向的一对一关系,如果要构成双向,在另外一个类里也添加上此类作为一个自定义类型
        this.weapon=weapon;
    }
    public Weapon getWeapon(){
        return weapon;
    }
    
    
    public Hero(){ //通常会保留默认的构造方法
        
    }
    public Hero(String name,int age){ //自定义构造方法
        this.name=name;
        this.age=age;
    }
    
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setAge(int age){
        this.age=age;
    }
    public int getAge(){
        return age;
    }
}

//兵器类
class Weapon{
    private String name;
    private int grade;
    
    private Hero hero; //把Hero这个类作为一个自定义类型,添加进来,构成一对一关系
    public void setHero(Hero hero){
        this.hero=hero;
    }
    public Hero getHero(){
        return hero;
    }
    
    public Weapon(){ //通常会保留默认的构造方法
        
    }
    public Weapon(String name,int grade){ //自定义构造方法
        this.name=name;
        this.grade=grade;
    }
    
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
    public void setGrade(int grade){
        this.grade=grade;
    }
    public int getGrade(){
        return grade;
    }
}

你可能感兴趣的:(对象的一对一关系)