基础知识——java 类的继承、重载与重写

继承

一、extends关键字来表示继承关系。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类Object进行继承;

二、子类继承父类的成员变量

  1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

  2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

  3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。

三、子类继承父类的方法

  1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

  2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

  3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。

  注意:隐藏和覆盖是不同的。隐藏是针对成员变量和静态方法的,而覆盖是针对普通方法的。

四、构造器

  子类是不能够继承父类的构造器,但是要注意的是,如果父类的构造器都是带有参数的,则必须在子类的构造器中显示地通过super关键字调用父类的构造器并配以适当的参数列表。如果父类有无参构造器,则在子类的构造器中用super关键字调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。

(父类的构造器调用以及初始化过程一定在子类的前面)

 

重载(overload)与重写(override)

一、重载

函数的方法参数个数或类型不一致,称为方法的重载。

从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。

二、重写

重写也被称为覆写。对一个方法的重写必须发生在具有继承关系的两个类中,即子类对父类方法的重写。它要求两个方法的参数个数和类型以及返回值类型都必须一致,这样才称为方法重写。

(子类对父类的方法覆写对权限有要求,子类方法的访问权限必须大于或等于父类方法的访问权限。也就是说如果父类方法的访问权限是default,那么子类必须是default或者public,如果父类方法是public访问权限,那么子类就只能是public访问权限了。父类方法如果是private,根据JAVA的封装性原则,private是不让其它任何类访问的,所以此时子类不能对父类的private方法进行覆写。)

三、总结

比较项目

重载

覆写/重写

英文名

Overload

Override

函数签名

只要求函数的参数个数或类型不一致,对返回值没要求

函数的参数个数、类型、返回值都必须完全一样。

发生地方

同一个类或者具有继承关系的两个类中

只能发生在继承关系的两个类中

访问权限

没有限制

子类覆写方法的访问权限必须大于或等于父类的方法的访问权限

 

 

参考:http://www.cnblogs.com/kuillldan/p/5905572.html

 

posted @ 2017-09-12 08:57  sharoncmt  阅读(577)  评论(0编辑  收藏  举报