Polymorphism vs Overriding vs Overloading

前端 未结 21 2781
北恋
北恋 2020-11-22 01:10

In terms of Java, when someone asks:

what is polymorphism?

Would overloading or overriding be

21条回答
  •  醉话见心
    2020-11-22 01:25

    The clearest way to express polymorphism is via an abstract base class (or interface)

    public abstract class Human{
       ...
       public abstract void goPee();
    }
    

    This class is abstract because the goPee() method is not definable for Humans. It is only definable for the subclasses Male and Female. Also, Human is an abstract concept — You cannot create a human that is neither Male nor Female. It’s got to be one or the other.

    So we defer the implementation by using the abstract class.

    public class Male extends Human{
    ...
        @Override
        public void goPee(){
            System.out.println("Stand Up");
        }
    }
    

    and

    public class Female extends Human{
    ...
        @Override
        public void goPee(){
            System.out.println("Sit Down");
        }
    }
    

    Now we can tell an entire room full of Humans to go pee.

    public static void main(String[] args){
        ArrayList group = new ArrayList();
        group.add(new Male());
        group.add(new Female());
        // ... add more...
    
        // tell the class to take a pee break
        for (Human person : group) person.goPee();
    }
    

    Running this would yield:

    Stand Up
    Sit Down
    ...
    

提交回复
热议问题