继承

Java三大特性之一 继承

概述

extends关键字,使用这个关键字,可以建立父类与子类之间的关系。

子类可以直接继承父类中的公共属性和方法。

优点

  • 提高代码的重复利用率
  • 避免代码的冗长

子类和父类创建时的注意点:子类与父类所共有的属性和行为,一般在父类中写出,子类中作出补充。

空间上在用子类创建对象是,会在堆内存创建两块空间(子类空间,父类空间),但是看作一体的,对外是一个对象

继承的特点:

  1. Java是单继承模式,一个子类只能继承一个直接父类。
  2. Java不支持多继承,但支持多层继承。
  3. Java中所有的类都是Object类的子类。
  4. 子类可以继承父类的属性和行为,但是不能继承父类的构造器。

**子类不能继承父类的构造函数 **

子类有自己的构造器,父类构造器用于初始化父类对象。

继承后成员变量的访问顺序

在子类中访问成员变量时:

  • 先寻找局部范围
  • 子类成员范围
  • 父类成员范围

对于子类和父类中存在同名的成员变量,this 指子类成员变量,super 指父类成员变量。

方法重写

形式:子类和父类中存在一摸一样的方法声明时,子类的方法就是父类方法的重写。

使用情况:方法的重写是父类的方法不能满足子类的方法时使用的。

方法的重写方法的重载形式类似。

@Override 重写注解

加上该注解后如果重写错误,程序会报错。

在方法重写前写下 @Override 有利于代码的阅读,同时可以判断该重写方法是否正确,更加安全。

重写的注意事项:

  • 重写的名称和参数列表必须与被重写方法的相同。
  • 私有方法静态方法不能被重写。
  • 子类重写父类方法时,访问权限必须要大于父类的。

构造器

子类在继承了父类之后构造器的特点:
在子类构造器中没有直接写出所访问的父类构造器时,默认在第一行存在 super(); 语句调用父类的无参构造器,来初始化父类构造器。

原因:
1. 子类在初始话时可能会调用父类的成员变量,如果父类没有完成初始话,那子类就无法调用。
2. 子类在初始化之前,需要先完成父类空间的初始化。

父类中的构造函数的写法会影响子类的构造函数的写法

如果父类中的无参构造器被私有化了,这是就需要调用 父类中的其他构造器来进行 子类的初始话,切不可省略。

注意:

this 和 super 不能共存

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容