Jaka jest różnica między dziedziczeniem a delegowaniem w java [duplikat]

Możliwy duplikat:
Wolisz kompozycję niż dziedziczenie?

Jaka jest różnica między dziedziczeniem a delegowaniem w Javie?

Jak korzystać z następującego przykładu w moim projekcie? Czy możesz mnie poprowadzić z delegacją. Wiem o spadku, ale nie mam zbyt wiele wiedzy na temat delegacji. Więc proszę podać właściwy powód. Dlaczego powinienem z tego korzystać?

 package com.m;

 class RealPrinter { // the "delegate"
     void print() { 
      System.out.println("something"); 
    }
 }

 class Printer { // the "delegator"
     RealPrinter p = new RealPrinter(); // create the delegate 
     void print() { 
     p.print(); // delegation
     } 
 }

 public class Tester {

// to the outside world it looks like Printer actually prints.
     public static void main(String[] args) {
        Printer printer = new Printer();
        printer.print();
     }

   }

questionAnswers(2)

yourAnswerToTheQuestion