1.成员函数在子父类中的特点
子类与父类方法一模一样(返回值类型、函数名、参数列表)时,会运行子类的方法,这种现象叫做覆盖(重写)。
2.重写(Override)与重载(Overload)的区别
重写是在子类中,并且与父类方法一模一样。但是重载的方法与被重写的方法在同一个类中,重载方法之间参数列表不一样,且重载与返回值的类型无关。
3.重写的注意事项
- 子类方法覆盖父类方法时,子类权限必须要大于等于父类的权限;
- 当权限相同时,无论父类/子类其中哪一个用static修饰,都不能发生覆盖。静态只能覆盖静态,或被静态覆盖。(因为static的成员是依赖于类的)
4.什么时候使用覆盖
当对一个类进行子类的扩展时,子类需要保留父类的功能声明,但是要定义该功能的特有内容时,就要使用覆盖操作完成。比如:父类为Animal,子类有Dog和Cat,父类中有吃的方法,Dog和Cat都extends了Animal,所以都有吃的方法,但是吃的不一样,就可以用覆盖来完成。
5.子类构造方法的首行会隐式调用父类空参的构造方法。即:super(); 如果父类中没有空参数的构造方法,就要在子类的构造方法的首行显式调用父类中的某一个构造函数。(因为父类的初始化过程要先完成) *super(); this();语句都只能在构造方法的首行调用。任何一个类的构造方法的首行都有super();因为Java中Object类是所有类的爸爸。
【PS:可见,所有类的MM被 的有多惨.......】