接(2)的对象创建与使用。
以下是两种类型的类关系。
1、用户类[地址类]、地址类、测试类;2、丈夫类[妻子类]、妻子类[丈夫类]、测试类;
[]中的类别是被包含的,例如用户类中信息包含了地址类。测试类作为提供main()方法的入口。
对应1——测试类:
//测试类---->串起来用户类User和住址类Address
//用户类User中对住址类的引用:成员变量中Address addr;
//引用数据类型既可以做成员变量又可以做局部变量;
public class OOTest02
{
public static void main(String[] args)
{
//创建User对象
User u = new User();
//修改User中的实例变量
u.number = 2303;
u.name = "gegege";
u.addr = new Address(); //通过创建的User对象访问addr,通过创建Address对象访问其中实例变量
//调用用户类User中的地址类Address中的城市属性
System.out.println(u.name+"她居住在"+u.addr.city); //没有赋值应为null?
u.addr.city = "杭州";
u.addr.street = "金梅路";
u.addr.number = 607;
System.out.println("序号为:"+u.number+"的同学:"+u.name+"住在"+u.addr.city+u.addr.street+"街道"+u.addr.number+"。");
}
}
用户类:
//用户类
public class User
{
//编号,实例变量
int number;
//用户姓名,实例变量
String name;
//对应家庭住址,addr为一个引用,实例变量
//Address是一种引用数据类型
Address addr;
}
地址类:
//家庭住址类
public class Address
{
String city;
String street;
int number;
}
画出对应的JVM图:
对应2——测试类:
//测试类
public class OOTest04
{
public static void main(String[] args){
//创建丈夫类和妻子类的对象
Husband chen = new Husband();
Wife wang = new Wife();
//要求:通过丈夫找到妻子,通过妻子找到丈夫
//需要锁定????
chen.w = wang; //如果不做这个赋值的话,chen.w=null,wang.h= null;
wang.h = chen;
//两者相互调用的话需要锁定,否则不能往下进行??
chen.w.idcard = "0123";
wang.h.idcard = "3210";
System.out.println("丈夫子chen的妻子身份证号:"+chen.w.idcard); //0123
System.out.println("妻子wang的丈夫身份证号:"+wang.h.idcard); //3210
}
}
丈夫类:
//丈夫类
public class Husband
{
String idcard;
//丈夫类中可以调用妻子类
Wife w;
}
妻子类:
//妻子类
public class Wife
{
String idcard;
//妻子类中可以调用丈夫类
Husband h; //引用数据类型声明
}
画出对应的JVM图: