继承

介绍

概述:Inheritance把多个子类的相同属性提取到父类,子类继承并直接使用。

特点:单继承。

子类继承父类,可以得到(除构造方法外)父类的全部包括私有)属性和方法,不能直接访问父类私有属性和方法,可以通过公共的setget方法访问。

Object类是顶级父类,所有类间接或者直接继承自它

意味着所有的Java对象都拥有Object类的属性和方法。如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类

注意如果父类有有参构造方法,子类重写父类必须提供有参构造方法(或者父类再提供一个无参构造),子类有参构造的参数列表必须包含父类构造方法里的参数。

Eclipse使用Ctrl+T查看继承结构

示例:

效果:

方法重写overwrite

概述:子类重写父类的方法,子类行为覆盖父类行为。重写是实现多态的必要条件。

要点:

  • 1、“==”: 方法名、形参列表(参数个数、参数类型、参数顺序)相同。

  • 2、“≤”:返回值类型(引用类型≤基本类型==)、异常类型,子类小于等于父类。

如图:

  • 3、“≥”: 访问权限,子类大于等于父类。

示例:

重写与重载区别

名称

范围

方法名

参数列表

返回值类型

修饰符

异常

重写

子父类

相同

相同

相同或子类

大于等于

<=

重载

本类

相同

不同(个数/类型/顺序)

无要求

无要求

无要求

toString()

概述:toString方法来自Object超类,我们可以类中重写它。

方法源码:

示例:

效果:

==与equals

==比较基本(比较值)与引用数据类型(比较对象地址值),

equals方法比较引用数据类型

  • Object类的equals方法默认比较两个对象的hashcode值。

  • String类的equals方法比较字符串内容是否相等(常用)。

示例:

手写equals

重要

比如一个类Pig,两个属性姓名年龄

super

super代表父类对象的引用,通过super关键字访问父类中被子类覆盖的方法或属性。

使用super调用普通方法,语句没有位置限制,可以在子类中随便调用。

如构造方法第一行代码无显式的调用super(...)或者this(...),Java默认会调用super(),调用父类无参构造方法。也可以调用有参构造方法,如super(id, name)。

属性/方法查找顺序

==比较基本(比较值

依次查找当前类至上溯每个父类一直到Object,无编译错误,有结束寻找。

构造方法调用顺序,先父后子。

示例

效果:

Last updated

Was this helpful?