Difference between Inheritance and Composition

前端 未结 17 1960
忘了有多久
忘了有多久 2020-11-22 02:35

Are Composition and Inheritance the same? If I want to implement the composition pattern, how can I do that in Java?

17条回答
  •  后悔当初
    2020-11-22 03:33

    Inheritances Vs Composition.

    Inheritances and composition both are used to re-usability and extension of class behavior.

    Inheritances mainly use in a family algorithm programming model such as IS-A relation type means similar kind of object. Example.

    1. Duster is a Car
    2. Safari is a Car

    These are belongs to Car family.

    Composition represents HAS-A relationship Type.It shows the ability of an object such as Duster has Five Gears , Safari has four Gears etc. Whenever we need to extend the ability of an existing class then use composition.Example we need to add one more gear in Duster object then we have to create one more gear object and compose it to the duster object.

    We should not make the changes in base class until/unless all the derived classes needed those functionality.For this scenario we should use Composition.Such as

    class A Derived by Class B

    Class A Derived by Class C

    Class A Derived by Class D.

    When we add any functionality in class A then it is available to all sub classes even when Class C and D don't required those functionality.For this scenario we need to create a separate class for those functionality and compose it to the required class(here is class B).

    Below is the example:

              // This is a base class
                     public abstract class Car
                        {
                           //Define prototype
                           public abstract void color();
                           public void Gear() {
                               Console.WriteLine("Car has a four Gear");
                           }
                        }
    
    
               // Here is the use of inheritence
               // This Desire class have four gears.
              //  But we need to add one more gear that is Neutral gear.
    
              public class Desire : Car
                       {
                           Neutral obj = null;
                           public Desire()
                           {
         // Here we are incorporating neutral gear(It is the use of composition). 
         // Now this class would have five gear. 
    
                               obj = new Neutral();
                               obj.NeutralGear();
                           }
    
                           public override void color()
                           {
                               Console.WriteLine("This is a white color car");
                           }
    
                       }
    
    
                 // This Safari class have four gears and it is not required the neutral
                 //  gear and hence we don't need to compose here.
    
                       public class Safari :Car{
                           public Safari()
                           { }
    
                           public override void color()
                           {
                               Console.WriteLine("This is a red color car");
                           }
    
    
                       }
    
       // This class represents the neutral gear and it would be used as a composition.
    
       public class Neutral {
                          public void NeutralGear() {
                               Console.WriteLine("This is a Neutral Gear");
                           }
                       }
    

提交回复
热议问题