覆写

现在已经清楚了继承的基本概念,那么此时就有可能出现这样的一种情况,如果子类现在定义了与父类相同的方法或者是属性的时候,这样的操作就称为覆写。

一.方法的覆写(重点

所谓的方法的覆写指的是子类定义了与父类方法名称、参数类型及个数完全相同的方法。但是被覆写的方法不能够拥有比父类更为严格的访问控制权限。

在以后进行覆写方法使用的时候一定要关注以下2点:

①你当前使用的对象是通过哪个类new的;

②当调用某一个方法,如果该方法已经被子类所覆写了,则调用的一定是被覆写的方法。

但是在进行方法覆写的时候也有一个明确的要求:被覆写的方法不能够拥有比父类更为严格的访问控制权限。关于访问控制权限才是封装的全部内容,现在已经接触过三种访问控制权限:private<default<public。

那么也就意味着父类中的方法使用了public进行定义,那么子类中使用的权限只能够是public,而如果父类的方法使用的是default权限,那么子类可以使用default或者是public。

结论:以后写方法就写public,至少能保证你在99.9999%情况下是正确的。同时以后只要写属性,98%的情况下都写private。

二. 属性覆盖(了解)

当子类定义了和父类属性名称完全相同的属性的时候就称为属性的覆盖。

三. super关键字

在之前讲解子类对象实例化操作的时候讲解过了super()的形式,当时的主要作用是由子类调用父类构造方法的时候才使用的,那么在进行覆写的操作过程之中,子类也可以使用super.方法()、super.属性明确的调用父类中的方法或属性。

如果此时直接写上了"this.printInfo()"操作,那么就表示先从本类查找所需要的方法。如果本类没有,则去找父类中指定的方法进行调用。而如果是“super.printInfo”表示的是不查找本类而直接调用父类中的方法。

通过一系列的讲解可以发现super和this使用形式上非常的相似,但是两者最大的区别是super是子类访问父类的操作,而this是本类的访问处理操作。 

能使用super.方法()一定要明确的标记出是父类的操作。

总结:

1. 子类覆写父类的方法是因为父类的方法功能不足,才需要覆写;

2. 方法覆写的时候使用的就是public权限,将父类的方法名称直接粘贴过来。

你可能感兴趣的:(覆写)