学习笔记 2018.4.5引用传递的实际应用

package Demo;

/**
 * 引用传递的实际应用 设计一个 人和汽车的关系
 * 引用是实现两个不同类型之间相互关联的主要手段
 * @author kikock
 *
 */
class Member { //人这个类
    private int mid;
    private String name;//
    // car有实例化对象表示 人有车
    // car为null表示 老子没车
    private Car car; // 表示属于人的车
    private Member child; //同上  表示属于这个人的孩子
    public Member() {
    } // 无参构造

    public Member(int mid, String name) {
        this.mid = mid;
        this.name = name;
    }

    public int getMid() {
        return mid;
    }

    public void setMid(int mid) {
        this.mid = mid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getInfo() {
        return "人员编号:" + this.mid + ",姓名:" + this.name;
    }
    
    public void setChild(Member child){
        this.child = child ;
    }
    public Member getChild(){
        return this.child;
    }
    
    public void setCar(Car car) {
        this.car = car;
    }

    public Car getCar() {
        return this.car;
    }
}

class Car {
    private Member member; // 车属于一个人
    private String pname;

    public Car() {
    } // 无参构造

    public Car(String pname) {
        this.pname = pname;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public String getInfo() {
        return "车的名字:" + this.pname;
    }

    public void setMember(Member member) {
        this.member = member;
    }

    public Member getMember() {
        return this.member;
    }
}

/**
 * Member 和Car 都应该是一个独立的对象,而后同过产生对象发生关系
 *
 *
 * @author kikcok
 *
 */

public class Test001 {

    public static void main(String[] args) {
        // 1.设置数据 (m 和 c两个独立对象 没有关系)
        Member m = new Member();//调用无参构造
        m.setMid(9527); // 设置一个人的编号
        m.setName("张三");
        Car c = new Car();
        c.setPname("宝马c4");
        // 2.设置关系
        m.setCar(c);
        // m对象 有一个c对象这个车 如果不设制为空
        c.setMember(m);
        // c对象车 属于m这个人
        // 3.通过人找到车的信息
        System.out.println(m.getCar().getInfo());
        //输出 人这个对象 m的车的getInf()方法  

        // 4.通过车找到人的信息
        System.out.println(c.getMember().getInfo());
        //  输出  车这个对象 c属于的人的 getInf()方法  
    /**
     * 进一步设计如果每一个人有孩子 ,孩子也可能有车
     * 方法1.设计一个孩子子类,孙子类...
     * 方法2.或者在member 中设计一个属性
     */
        Member chd = new Member();//设置一个孩子
        chd.setMid(9528);
        chd.setName("陈冠希");
        Car cc = new Car("法拉利");  //设置一辆车 ,调用一个参数的构造方法
        //一个孩子(chd)有一辆车(cc)
        chd.setCar(cc);
        //车(cc)属于孩子(chd)
        cc.setMember(chd);
        //m这个人的孩子是chd
        m.setChild(chd);
        //通过人(m)找到他孩子(chd)的信息
        System.out.println(m.getChild().getInfo());
        //通过人(m)找到孩子的车(cc)的信息
        System.out.println(m.getChild().getCar().getInfo());//代码链m.getChild().getCar().getInfo()
    /**
     * ps: 日常描述电脑 :主机 显示器 鼠标 cpu 显卡 内存...
     *   代码描述电脑?
     *   class 键盘{}
     *   class 鼠标{}
     *   class cpu{}
     *   class 硬盘{}
     *   class 内存{}
     *   class 显示器{}
     *   class 主板{}
     *   class 主机{
     *           private cpu 对象[] ; (多个用对象数组表示)
     *           private 硬盘 对象[];
     *           private 主板 对象;
     *           private 内存 对象[] ;
     *   class 电脑{
     *           private 主机 对象 ; (多个用对象数组表示)
     *           private 显示器 对象;
     *           private 键盘 对象;
     *           private 鼠标 对象 ;
     *   }
     *   //合成设计模式
     *
     *
     */
    }

}

猜你喜欢

转载自blog.csdn.net/kikock/article/details/79829895