Since you're using those particular terms, and all three in the same context, I'm guessing you're learning about UML diagrams. And since you categorized the question under Java, I'm guessing you want to know how to use Java to realize these concepts.
An association is just a reference. If my class has a property with getter/setter, let's say it's a StringBuffer, then my class has an association to StringBuffer.
Aggregation is multiple references. These are one-to-many, like an array. If my class has a List<StringBuffer> so StringBuffer objects can be added and removed, my class has an aggregation of StringBuffers.
Let's say I want to create a class that's just like StringBuffer but it has some other methods and features that make it special. I could have a private StringBuffer object which my class "wraps", by using the StringBuffer methods as the implementation of my class' methods (a concept called delegation), then I can state that my class is composed of a StringBuffer, or is a composition of StringBuffer
for more information follow the bellow link
https://stackoverflow.com/questions/885937/what-is-the-difference-between-association-aggregation-and-composition