If you're interested in design patterns you can go
here, or do a Google search.
I don't really consider inheritance and delegation to be major design patterns though. They are more like basic OO concepts.
Inheritance is used to create a hierarchical-type code structure that tries to keep as much "common" code near the top of the hierarchy, so it can be reused by lower levels of the hierarchy. So, in this approach, classes get more specialized as you move toward the bottom of the hierarchy. In small, static systems, inheritance can be ok. But large inheritance chains can also lead to hard-to-maintain code. Read up on design patterns that favor composition over inheritance for more info when to use inheritance and when not to.
Delegation is simply passing a duty off to someone/something else. Here is a simple example:
public class Information
{
public String getTemperature()
{
return TempGetter.getTemperature();
}
public String getTime()
{
return TimeGetter.getTime();
}
}
In this example, I've got imaginary classes TimeGetter and TempGetter that have static methods for retrieving time and temperature. Rather than finding my own way to obtain these data, I use existing classes. Said another way, I delegate these tasks to these classes without knowing/caring about the details of how it gets done.