Java overload override inheritance polymorphism

Java overload, override, inheritance, and polymorphism.

overload

  • Multiple methods with the same name but different in:
    • parameters number;
    • or
    • parameters type;
  • Excluding the following cases:
    • different parameters name;
    • different return type;

override

  • Subclass declares methods that are already present in its parent class:
    • with argument list (type and sequence) the same as that of the parent;
    • with return type the same or subtype of that of the parent;
    • with narrower or fewer checked exceptions than that of the parent;
    • and access modifier not being more restrictive than that of the parent;
  • Except for the following cases:
    • method declared ‘final’ cannot be overridden;
    • method declared ‘static’ cannot be overridden;
    • method declared ‘private’ cannot be inherited therefore not overridden;
    • constructors cannot be overridden;

inheritance

  • The extends keyword is used for inheritance;
  • Child class derives from parent class with all nonstatic/nonprivate members;

polymorphism

  • Child inherits and overrides parent method;
  • Parent variable references child and the behavior is based on child method;

example

class Triangle extends Shape
{
      // method overriding
      public int getSides()
      {
        return 3;
      }
}

class Rectangle extends Shape
{
      public int getSides(int i)
      {
        return i;
      }
}

public class Shape
{
      public boolean isShape()
      {
        return true;
      }

      public int getSides()
      {
        return 0;
      }

      // method overloading      
      public int getSides(Triangle tri)
      {
        return 3;
      }

      public int getSides(Rectangle rec)
      {
        return 4;
      }

      public static void main(String[] args)
      {
            Triangle triangle = new Triangle();
            System.out.println(triangle.isShape()); // inheritance

            Shape shape = new Triangle();
            System.out.println(shape.getSides());  // polymorphism
      }
}

java