Overload
Overload是重载,重载是java多态的一种体现,重载体现在方法名相同,对于参数列表和返回值可不相同。特点就是与返回值无关,只看参数列表所以重载的方法是可以改变返回值类型的。
但如果两个方法参数列表一致,则不能通过返回值不同来体现重载,假设某类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。
Override
Override是重写,是继承关系之间的一种体现,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写,子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
关于重写重载的一些面试题
- 构造器Construct是否可被Override?
构造器不能被继承,所以不能被重写,但可以继承。当子类中没有任何构造器的时候,会通过super()调用父类的无参构造器。 - 接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可以继承具体类?抽象类中是否可有静态的main方法?
接口可以继承接口;抽象类可以实现接口,因为抽象类不一定就全是抽象方法;抽象类可以继承实体类;抽象类中可以有静态的main方法。
抽象类和普通类的唯一区别就是不能创建实例对象和允许有abstract方法。