Java中类之间的关系

主要介绍java中的关联关系聚合关系合成关系以及依赖关系
顺便介绍 is-a, is-like-a, has-a

类之间的关系

泛化关系

类和类之间的继承关系以及接口与接口之间的继承关系

泛化关系·继承:类的继承,接口的继承

实现关系

类对接口的实现

实现关系·类实现接口

关联关系

类与类之间的连接,一个类可以知道另一个类的属性和方法,在java语言中使用成员变量体现

Me me = new Me(new Friend()) //建立关联关系

  • 例如我和朋友的关系

    • 我可以找到我朋友的地址
    public class Friend{
        public String addr;
    }
    class Me{
        Friend f;
        public Me(Friend f){
            this.f = f;
        }
        // test
        public static void main(String[] args){
            Friend f = new Friend();
            Me me = new Me(f);
            System.out.println(me.f.addr)//获取朋友的地址
        }
    }
    

关联关系·通过“我”可以找到朋友

聚合关系

聚合关系是关联关系的一种,是较强的关联关系,是整体和部分的关系。例如:汽车和轮胎

和关联关系不同,关联关系的类处于同等的层次上,而聚合关系的类处于不同等的层次上,一个代表整体,一个代表部分

聚合关系是整体和部分的关系

​ 整体不依赖部分

​ 部分也不依赖整体

整体无法决定部分的声明周期(人和四肢的关系就不属于聚合关系)

  • 例如教室和学生的关系

    public class Student{
        
    }
    public class ClassRoom{
        List<Student> s;
    }
    

聚合关系·整体和部分的关系:部分的声明周期和整体无关

合成关系

合成关系也是关联关系的一种,比聚合关系更强一些

合成关系和聚合关系是相似的,区别在于:

​ 合成关系的整体和部分是紧密联系的,整体的生命周期决定部分的生命周期

  • 例如人和四肢的关系

    public class human{
        List<四肢> s;
    }
    

合成关系·比聚合关系要强,部分的生命周期由整体决定

依赖关系

依赖关系比较弱,是一种比关联关系弱的一种关系

java语言中体现在:返回值、参数、局部变量和静态方法的调用

  • 例如

    public class Test{
        public void m1(){
            User user = new User();//依赖关系
        }
    }
    class user{
    }
    

比关联关弱·仅仅是调用关系

is-a/is-like-a/has-a

is-a
  • Dog is a Animal

  • is-a 是继承关系

    public class Animal{
        
    }
    class Dog extends Animal{
        
    }
    
is-like-a
  • A is like a I

  • is-like-a 是实现关系

    public Interface I{
        void m1();
    }
    class A implements I {
        public void m1(){
            
        }
    }
    
has-a
  • A has a B

  • has-a 是包含关系

    public class B{
        
    }
    class A{// A has a B
        private B b;
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tailor_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值