当前位置:
首页
文章
移动端
详情

11. 类的关系——依赖关系

1、特点

  • 指一个类A使用到了另一个类B
  • 这种关系具有偶然性的,临时性,非常弱的,但类B的变化影响类A
  • 表现:类B作为参数被类A在某个方法中使用(形参)

2、代码实现

2.1 形式参数

//依赖关系

//公交车类
public class Bus {
    private int num;
    private String name;
    
    public Bus() {
        // TODO Auto-generated constructor stub
    }   
}


//食物类
public class Food {
    private String name;
    private double price;
    
    public Food() {
        // TODO Auto-generated constructor stub
    }   
}

//人类(测试类)
public class People {
    private String name ; 
    private int age;
    
    public People() {
        // TODO Auto-generated constructor stub
    }
    
    public void travel(Bus bus) {
        
    }
    
    public void eat(Food food) {
        
    }
}

2.2 局部变量

//类A
public class A {

    public A() {

    }

    public void method() {
        B b = new B();
    }
}

//类B
public class B {

    public B() {

    }

}

2.3 静态方法的调用

//类A
public class A {

    public A() {

    }

    public void method() {
        B.staticMethod();
    }

}

//类B
public class B {

    public B() {

    }
    
    public static void staticMethod() {
           
    }
}

2.4 返回值

//类A
public class A {

    public A() {

    }

    public B method() {
        return null;
    }

}

//类B
public class B {

    public B() {

    }

}

三、依赖与关联的区别

关联是“HAS”关系,依赖是“USE”关系
-A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
-A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。当然,也包括局部变量、返回值类型和静态方法调用这三种场景。
生命周期不同
-如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。
-如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。

四、经典案例

4.1 发送器和消息

//类:发送器
public class Sender {
    
    public Sender() {
        
    }
    
    public void send(Message message) {
        
        
    }

}

//类:消息
public class Message {
    
    public Message() {
        
    }

}

4.2 Java API静态方法

public class Client {

    public static void main(String[] args) {

        // 常用静态方法
        long currentTime = System.currentTimeMillis();

        double randomNum = Math.random();

        int num = Integer.parseInt("100");

        String string = String.valueOf(true);

        DateFormat dateFormat = DateFormat.getDateInstance();

    }

}

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。