美文网首页Javajava进阶干货Java 杂谈
java面向对象——类的继承和基于继承关系的初始化顺序

java面向对象——类的继承和基于继承关系的初始化顺序

作者: 少帅yangjie | 来源:发表于2017-11-27 22:40 被阅读9次

一.类的继承

1.class aa extends AA这个就表示aa作为子类继承于父类AA。

2.当用一个子类继承一个父类时,它就会继承父类的所有属性和方法。

3.很多时候,子类的方法和父类中的方法不一样,子类可以写一个一模一样的方法来实现覆盖。

4.如果子类覆盖父类的构造方法后,想调用父类的方法时,可以用super.xx来调用。


相关例子:(包含内存模型)

相关代码 输出结果 内存模型


二.基于继承关系的初始化顺序


1.基于继承关系的初始化顺序:

a.首先创建子类之前先创建父类

b.然后来创建类的静态成员

c.之后创建属性

d.最后调用构造函数

2.特别注意:

a.创建子类之前都会先创建父类,并且调用不带参数的构造函数创建父类。

b.如果父类没有不带参数的构造函数,创建子类就会报错。

c.解决问题的方法是:在子类中的每一个构造函数中通过super来手动指明构造函数。

相关例子:

相关代码 输出结果

手动调用了一个父类的构造函数来构造父类

特别注意:不是使用super.xx而是直接通过super()来调用

关于构造方法的事,在继承中,因为子类可能用到父类中的数据,所以在子类构造方法的默认第一句都是系统自动添加父类的空参构造方法,如果父类中没有空参构造,就要显式的调用父类有参的构造方法,在创建子类对象之前,必须调用父类的构造方法对父类中的数据进行初始化。如果父类没有空参构造,而你又没有在子类中显式的调用父类的有参构造,这时就会报错。所以,子类构造方法必须显式调用父类的构造方法。

相关文章

  • java面向对象——类的继承和基于继承关系的初始化顺序

    一.类的继承 1.class aa extends AA这个就表示aa作为子类继承于父类AA。 2.当用一个子类继...

  • JAVA入门-面向对象之继承

    JAVA入门-面向对象之继承 一、继承 继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现...

  • C++对象模型5——对象的构造/析构

    对象的构造/析构顺序 初始化虚基类,按照继承顺序,从左到右,从最深到最浅。 初始化按照继承顺序初始化父类,如果父类...

  • 理解JavaScript中的继承关系

    原型概念 JavaScript的面向对象和Java有所区别,Java有类和实例的概念,类之间可以有继承关系,而在J...

  • Dart 2 (七) 类

    类 Dart是一种面向对象的语言,带有类和基于mixin的继承。每个对象都是类的实例,所有类都是从对象继承而来。基...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

  • Java 教程笔记-学习Java语言

    学习Java语言 面向对象编程概念 核心概念:对象,消息,类和继承这一节会介绍 对象,类,继承,接口和包 What...

  • 面对对象高级编程

    面向对象高级编程: 面向对象编程:封装、继承和多态 面向对象高级编程:多重继承、定制类和元类

  • java中的继承

    继承的关键之是extends子类 extends 父类 继承的初始化顺序 初始化父类再初始化子类 先执行初始化对象...

  • python面向对象特征之-继承

    面向对象的特征——继承 继承是面向对象的重要特征之一,继承是两个类或者多个类之间的父子关系,子进程继承了父进程的所...

网友评论

    本文标题:java面向对象——类的继承和基于继承关系的初始化顺序

    本文链接:https://www.haomeiwen.com/subject/oyjjbxtx.html