一个人有一本书,一本书属于一个人。
--> 人应该是一个具体类,书也应该是一个具体类,在人的类中应该存在一个属性表示书,在书的类中也存在一个属性表示人。
//范例:一对一关系
class Person {
private String name;
private int age;
private Book book;
public Person(String name, int age){
this.setName(name);
this.setAge(age);
}
public String getName(){ // 返回姓名
return name;
}
public void setName(String n){ // 设置姓名
name = n;
}
public int getAge(){ // 返回年龄
return age;
}
public void setAge(int a){ // 设置年龄
age = a;
}
public Book getBook(){
return book;
}
public void setBook(Book b){
book = b;
}
}
class Book {
private String title;
private float price;
private Person person;
public Book(String title, float price) {
this.setTitle(title);
this.setPrice(price);
}
public String getTitle() { // 得到标题
return title;
}
public void setTitle(String t){ // 设置标题
title = t;
}
public float getPrice(){ // 得到价格
return price;
}
public void setPrice(float p){ // 设置价格
price = p;
}
public Person getPerson() {
return person;
}
public void setPerson(Person p) {
person = p;
}
}
public class OneToOne{
public static void main(String []args){
Person pers=new Person("张三", 30);
Book bk = new Book("JAVA SE", 90.0f);
pers.setBook(bk);
bk.setPerson(pers);
System.out.println("从人找到书--》姓名:" + pers.getName() + " 年龄:"
+ pers.getAge() + " 书名:" + pers.getBook().getTitle() + " 价格:"
+ pers.getBook().getPrice());
System.out.println("从书找到人--》书名:" + pers.getBook().getTitle() + " 价格:"
+ pers.getBook().getPrice() + " 姓名:" + pers.getName() + " 年龄:"
+ pers.getAge());
}
}
进一步深入一对一关系:
假如一个人有一个孩子,每个孩子还会有一本书。
如何分析:再单独建立一个孩子的类?NO!因为孩子也是一个Person,所以可以在Person类中增加一个引用即可。
//范例:一对一关系
class Person {
private String name;
private int age;
private Book book;
private Person child;
public Person(String name, int age){
this.setName(name);
this.setAge(age);
}
public String getName(){ // 返回姓名
return name;
}
public void setName(String n){ // 设置姓名
name = n;
}
public int getAge(){ // 返回年龄
return age;
}
public void setAge(int a){ // 设置年龄
age = a;
}
public Book getBook(){
return book;
}
public void setBook(Book b){
book = b;
}
public Person getChild(){
return child;
}
public void setChild(Person child){
this.child = child;
}
}
class Book {
private String title;
private float price;
private Person person;
public Book(String title, float price) {
this.setTitle(title);
this.setPrice(price);
}
public String getTitle() { // 得到标题
return title;
}
public void setTitle(String t){ // 设置标题
title = t;
}
public float getPrice(){ // 得到价格
return price;
}
public void setPrice(float p){ // 设置价格
price = p;
}
public Person getPerson() {
return person;
}
public void setPerson(Person p) {
person = p;
}
}
public class OneToOne2{
public static void main(String []args){
Person pers= new Person("张三", 30);
Person cld = new Person("张小三", 10);
Book bk = new Book("JAVA SE", 90.0f);
Book bkc = new Book("LOVE", 30.0f);
pers.setBook(bk); //设置对象间的关系,一个人有一本书
bk.setPerson(pers); //一本书属于一个人
cld.setBook(bkc); //一个小孩有一本书
bkc.setPerson(pers); //一本书属于一个小孩
pers.setChild(cld); //一个人有一个小孩
System.out.println("从人找到书--》姓名:" + pers.getName() + " 年龄:"
+ pers.getAge() + " 书名:" + pers.getBook().getTitle() + " 价格:"
+ pers.getBook().getPrice());
System.out.println("从书找到人--》书名:" + pers.getBook().getTitle() + " 价格:"
+ pers.getBook().getPrice() + " 姓名:" + pers.getName() + " 年龄:"
+ pers.getAge());
System.out.println(pers.getName() + "的孩子--> 姓名:" + pers.getChild().getName()
+ " 年龄:" + pers.getChild().getAge()
+ " 书名:" + pers.getChild().getBook().getTitle()
+ " 价格:" + pers.getChild().getBook().getPrice());
}
}
运行结果:
-------------------------------------------------------
从人找到书--》姓名:张三 年龄:30 书名:JAVA SE 价格:90.0
从书找到人--》书名:JAVA SE 价格:90.0 姓名:张三 年龄:30
张三的孩子--> 姓名:张小三 年龄:10 书名:LOVE 价格:30.0
EverNote笔记