Java语言中类与类之间的关系

Java语言中类与类之间的关系

  • 关联关系
  • 依赖关系
  • 继承关系
  • 实现关系(本质也是继承关系)

关联关系

  • 对象和对象之间的连接。在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在。
  • 即“有”的关系:”has-a”。
  • 如果两个互相关联的类中有整体和部分的关系,关联关系分为: 聚合和组合,主要区别在于生命周期不同。

    • 聚合:创建Student对象时Classes对象可以不创建,当Student 对象销毁时Classes不销毁

public class Student{
    private Classes cla;//班级
     }
    public  class Classes{
     }

    • 组合:创建Student对象的时Classes类同样创建,Student对象销毁时,Classes对象也销毁

public class Student{
     private Classes cla=new
                   Classes();//班级
     }
     class Classes{
     }

  • 关联关系分为单向关联和双向关联
    • 单向关联: A类关联B类。
    • 双向关联:A类关联B类,B类关联A类;

依赖关系(use-a)

  • 指一个类A使用到了另一个类B
  • 依赖关系的特性:这种关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。
  • 依赖具体表现:在代码层面,依赖关系表现为类B作为参数被类A在某个method
    方法中使用

   public  class Person {
   public void travel(Bus bus){
   }
   }

  • 关联是“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类之间的依赖关系是一种瞬时的关系。

继承

继承基本概念

  • 现实生活中的继承

    • 类似于遗传的意思,比如说你从你母亲那里遗传了一头美丽的金发,也就是说你和你母亲一样都有一头美丽的金发。
    • 但是也存在不同的地方,比如说你的眼睛比你母亲大。
  • Java中的继承

    • 员工为父类,这个类包含所有员工所共有的特性,比如说姓名、地址、基本工资等。
    • 员工下面有能细分为具体的某类员工,比如说工人、经理、董事等。工人、经理、董事具有员工所共有的特性,也具有各自的特性。比如说董事有交通补助的特性,而员工不具有这个特性。
    • 董事下面还能继续细分为执行董事、非执行董事等,所以子类也能继续拥有子类。
/**
 * 员工
 * 
 * @author 鑫
 */
public class Staff {
    /**
     * 姓名
     */
    private String name;
    /**
     * 地址
     */
    private String address;
    /**
     * 基本工资
     */

    private double wages;
    //获取员工姓名
    public String getName() {
        return name;
    }

    //给员工姓名赋值
    public void setName(String name) {
        this.name = name;
    }

    //获取员工地址
    public String getAddress() {
        return address;
    }

    //给员工地址赋值
    public void setAddress(String address) {
        this.address = address;
    }

    //获取员工基本工资
    public double getWages() {
        return wages;
    }

    //给员工基本工资赋值
    public void setWages(double wages) {
        this.wages = wages;
    }
}

/**
 * 董事
 * 
 * @author 鑫
 *
 */

//Director类为上面例子Staff类的子类
public class Director extends Staff {

    /**
     * 交通补助
     */
    private double transportationAssistance;

  • B类继承A类,那么B类将拥有A类的所有属性和方法,此时我们说A类是B类的父类,B类是A类的子类

  • C类继承B类,那么C类将拥有B类中的所有属性和方法,包括B类从A类中继承过来的属性和方法,此时我们说B类是C类的父类,C类是B类的子类

  • 基类的私有属性能被继承,不能在子类中访问。

  • 继承是单继承:也就是说一个类只能一个父类,不能继承多个父类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值