所谓一对一关系,就好比如一个丈夫对应一个妻子,一本书对应一个作者。
若想只实例化一个丈夫对象,就能获得他妻子的名字、年龄,这就需要两个对象产生关系。
实现思路:
在丈夫类中实例化一个妻子的对象,作为丈夫类中的一个属性,在实例化丈夫这个对象的时候,顺便传进去妻子的对象即可,两个对象就产生了关系
例子:
public class test {
// 先建立 Husband 类
class Husband{
private String name; //属性私有化,防止外面直接赋值和调用
private int age;
private Wife wife; //若是 通过丈夫找妻子 这种单向1v1,则需要声明一个妻子类的私有化对象;
/* 向外界提供一个可以设置和获取 妻子类对象的方法
若是 通过丈夫找妻子 这种单向1v1,则需要设置和获取 妻子类对象的方法
若是 双向1v1,也需要设置和获取 妻子类对象的方法
否则 则不需要设置
*/
public void setWife(Wife wife){
this.wife = wife;
}
public Wife getWife(){
return wife;
}
// 构造方法 ,方便创建对象时直接赋值。
public Husband() {} //默认的构造方法,一般要保留
public Husband(String name,int age) {
this.name = name;
this.age = age;
}
//向外界提供可以获取和设置本类对象属性的方法,getter and setter 方法
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;
}
}
// 再建立一个 Wife 类
class Wife{
private String name;
private int age;
private Husband husband;
/* 向外界提供一个可以设置和获取 丈夫类对象的方法
若是 通过妻子找丈夫 这种单向1v1,则需要设置和获取 丈夫类对象的方法
若是 双向1v1,也需要设置和获取 丈夫类对象的方法
否则 则不需要设置
*/
public void setHusband(Husband husband){
this.husband = husband;
}
public Husband getHusband(){
return husband;
}
public Wife(){}
public Wife(String name, int age){
this.name = name;
this.age = age;
}
//向外界提供可以获取和设置本类对象属性的方法,getter and setter 方法
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;
}
}
// 面向对象的一对一关系
public class One2One {
public static void main(String[] args) {
Husband husband = new Husband("里斯",35); //实例化对象,并且赋值
Wife wife = new Wife("Lisa",27); //实例化对象,并且赋值
/*建立关系
若为 单向一对一:则把妻子or丈夫类对象设置成丈夫or妻子类中的一个属性
若为 双向一对一:则分别将妻子or丈夫类对象设置成丈夫or妻子类中的一个属性
*/
Husband.setWife(wife); //把妻子类对象设置成丈夫类中的一个属性
Wife.setHusband(husband); //把丈夫类对象设置成妻子类中的一个属性
//用丈夫查找妻子
System.out.println("我的名字叫"+husband.getName()+",我现在"+husband.getAge()+"岁了,我妻子是"+husband.getWife().getName()+",她"+husband.getWife().getAge()+"岁");
//用妻子找对应的丈夫
System.out.println("我是"+wife.getName()+",我今年"+wife.getAge()+"岁了,我的丈夫是"+wife.getHusband().getName()+",现在已经"+wife.getHusband().getAge()+"岁了");
}
}
}