资讯专栏INFORMATION COLUMN

Java类的继承

seanHai / 2162人阅读

摘要:的继承具有单继承的特点,每个子类只有一个直接父类。继承的特点的继承通过关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有的也称其为基类超类。是提供的一个关键字,用于限定该对象调用它从父类继承得到的实例变量或方法。

继承是面向对象的三大特征之一,也是软件复用的重要手段。Java的继承具有单继承的特点,每个子类只有一个直接父类。

继承的特点

Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有的也称其为基类、超类。子类是对父类的拓展,子类是一种特殊的父类。
如果定义一个java类时并未显示指定这个类的直接父类,则这个类默认拓展java.lang.Object类。

重写父类的方法

这种子类包含与父类同名方法的现象被称为方法重写,也被称为方法覆盖。方法的重写要遵循“两同两小一大”规则。
两同 即方法名相同,形参列表相同;
两小 指的是子类方法返回值类型应比父类返回值类型更小或相等,子类方法声明抛出的异常类型应该比父类方法声明抛出的异常类型更小或相等;
一大 指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
尤其需要指出的是,覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法

当子类覆盖了父类方法后,子类的对象将无法访问父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法。如果需要在子类方法中调用父类中被覆盖的方法,则可以使用super(被覆盖的是实例方法)或者父类类名(被覆盖的是类方法)作为调用者来调用父类中被覆盖的方法。

如果父类具有private访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是无法重写该方法。如果子类中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的方法返回值类型的方法,依然不是重写,只是在子类中重新定义了一个新方法。

重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类的同名方法之间。它们之间的联系很少,除了二者都是发生在方法之间,并且要求方法名相同之外,没有太大相似之处。当然,父类方法和子类方法之间也可能发生重载,因为子类会获得父类方法。

super限定

如果需要在子类方法中调用父类被覆盖的实例方法,则可以使用super限定来调用父类被覆盖的实例方法。
super是Java提供的一个关键字,super用于限定该对象调用它从父类继承得到的实例变量或方法。
正如this不能出现在static修饰的方法中一样,super也不能出现在static修饰的方法中。static修饰的方法是属于该类的,该方法的调用者可能是一个类,而不是对象,因而super限定也就失去了意义。

不管是否使用super调用来执行父类构造器的初始化代码,子类构造器总会调用父类构造器一次。子类构造器调用父类构造器分如下几种情况:

子类构造器执行体的第一行使用super显示调用父类构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器。

子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器,执行本类中另一个构造器是即会调用父类构造器。

子类构造器执行体中既没有super调用,也没有this调用,系统将会在执行子类构造器之前,隐式调用父类无参数的构造器。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68522.html

相关文章

  • 8.java 继承

    摘要:继承就是子类继承父类的特征和行为,使得子类对象实例具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。关键字在中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以只能继承一个类。 概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承...

    huaixiaoz 评论0 收藏0
  • Java™ 教程(继承

    继承 在前面的课程中,你已经多次看到了继承,在Java语言中,类可以从其他类派生,从而从这些类继承字段和方法。 定义:从另一个类派生的类称为子类(也是派生类,扩展类或子类),派生子类的类称为超类(也是基类或父类)。 除了Object没有超类,每个类都有一个且只有一个直接超类(单继承),在没有任何其他显式超类的情况下,每个类都隐式地是Object的子类。 类可以从派生自类的类派生的类派生,依此类推,...

    Achilles 评论0 收藏0
  • 关于继承的那些事!

    摘要:格式子类名父类名好处提高了代码的复用性提高了代码的维护性通过少量的修改,满足不断变化的具体要求让类与类产生了一个关系,是多态的前提要求有共同的属性或操作有细微的差别继承的弊端让类的耦合性增强。 showImg(https://segmentfault.com/img/remote/1460000019321816?w=600&h=242); 第二阶段 JAVA面向对象 第二章 继承 其...

    soasme 评论0 收藏0
  • java学习(三) —— 面对对象

    摘要:前言是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。面对对象基本概述概述是基于面向过程的变成思想,是对面向过程的一种封装。面对对象开发就是不断的创建对象,使用对象,指挥对象做事情。面对对象设计其实就是在管理和维护对象之间的关系。 前言 java是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。 面对对象,主要包括:面向对象思想,类与对象及其使用,对象的内存图,成...

    褰辩话 评论0 收藏0
  • Java基础(了解继承

    摘要:上学学的完全没印象,基础烂的不行,最近项目主要是改,有时间就看了一下这本书补一下基础在写项目时,老用到继承,但是对其了解不深,会用但是不理解概念继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 上学学的完全没印象,Java基础烂的不行,最近项目主要是改bug,有时间就看了一下Head First Java这本书补一下基础 在写项目时,老用到Java继承,但是对其了解不深...

    MageekChiu 评论0 收藏0
  • Java 面向对象编程的三大特性(封装、继承、多态)以及重写和重载

    摘要:实现多态的三个必要条件继承在多态中必须存在有继承关系的子类和父类。参考面试题解惑系列九继承多态重载和重写面向对象三大特性封装,继承,多态以及抽象接口的介绍 版权声明:本文由吴仙杰创作整理,转载请注明出处:https://segmentfault.com/a/1190000009141566 1. 面向对象编程的三大特性 Java 面向对象编程有三大特性:封装、继承、多态。 1.1 封装...

    sushi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<