大数据——Java三大特征之一继承

继承

  • 继承的基本概念
  • 继承的应用
  • 使用继承
    • 使用super关键字调用父类成员
    • 实例化子类对象
    • Object类
    • 总结
  • 方法重写

继承的基本概念

继承是面向对象的三大特征之一,继承可以解决编程中代码冗余的问题,是实现代码重用的重要手段之一。继承是软件可重用性的一种表现,新类可以在不增加自身代码的情况下,通过从现有的类中继承其属性和方法,来充实自身内容,这种现象或行为就称为继承。此时新类称为子类,现有的类称为父类。继承最基本的作用就是使得代码可重用,增加软件的可扩充性。
Java中只支持单继承,即每个类只能有一个父类。
继承的语法格式如下:
[访问修饰符] class extends{
}
在Java中,继承通过extends关键字实现,其中SubClass称为子类,SuperClass称为父类或基类。
访问修饰符如果是public,那么该类在整个项目中可见。
若不写访问修饰符,则该类只在当前包中可见。
在Java中,子类可以从父类中继承以下内容:
可以继承public和protected修饰的属性和方法,不论子类和父类是否在同一个包里;
可以继承默认访问修饰符修饰的属性和方法,但是子类和父类必须在同一个包里;
无法继承父类的构造方法。

继承的应用

若使用面向对象编写部门类,目前共有8个部门,需要定义8个类,各个部门有很多共有属性,导致很多代码都是一样的,只有很少一部分不一样,如果使用继承,就可以对相同的代码实现重写,提高工作效率。
示例一:
请使用继承,将8个部门类中相同的代码抽取成一个“部门类”。
关键代码:

示例一的代码中将8个不同的部门子类的公共部分抽取成Department类,然后8个子类分别继承这个父亲,就可以省去很多冗余的代码。至此,任务完成了。

使用继承

编写父类:[访问修饰符] class Pet {
//公共的属性和方法
}
编写子类:[访问修饰符] class Dog extends Pet {
//子类特有的属性和方法
}

使用super关键字调用父类成员

当需要在子类中调用父类的构造方法时,可以使用super关键字调用。
当函数参数或函数中的局部变量和成员变量同名时,成员变量会被屏蔽,此时若要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。super关键字和this关键字的作用类似,都是将被屏蔽了的成员变量、成员方法变得可见、可用,也就是说,用来引用被屏蔽的成员变量或成员方法。不过,super是用在子类中,目的只有一个,就是访问直接父类中被屏蔽的内容,进一步提高代码的重用性和灵活性。super关键字不仅可以访问父类的构造方法,还可以访问父类的成员,包括父类的属性、一般方法等。
通过super访问父类成员的语法格式如下:
访问父类构造方法:super(参数)
访问父类属性/方法:super<父类属性/方法>
super只能出现在子类(子类的方法和构造方法)中,而不是其他位置。
super用于访问父类的成员,如父类的属性、方法、构造方法。
具有访问权限的限制,如无法通过super访问父类中的private成员。
super调用构造方法时,只能是第一句。

实例化子类对象

在Java中,一个类的构造方法在如下两种情况下总是会被执行:
创建该类的对象(实例化)。
创建该类的子类的对象(子类的实例化)。
因此,子类在实例化时,会首先执行父类的构造方法,然后才执行子类的构造方法。换言之,当在Java语言中创建一个对象时,Java虚拟机会按照父类——子类的顺序执行一系列的构造方法。子类继承父类时构造方法的调用规则如下:
(1)如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有通过this显示调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。
(2)如果子类的构造方法中通过super显示地调用了父类的有参构造方法,那么将执行父类相应的构造方法,而不执行父类无参构造方法。
(3)如果子类的构造方法中通过this显示地调用了自身的其他构造方法,在相应构造方法中遵循以上两条规则。
特别需要注意的是,如果存在多继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类传递,一直到执行顶级父类Object类的无参构造方法为止。

Object类

Object类是所有类的父亲。在Java中,所有的Java类都有直接或间接地继承了java.lang.Object类。Object类是所有Java类的祖先。在定义一个类时,没有使用extends关键字,也就是没有显示地继承某个类,那么这个类直接继承Object类。所有对象都继承这个类的方法。

大数据——Java三大特征之一继承
示例二:

输出结果:

大数据——Java三大特征之一继承

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91518 人正在系统学习中

来源:蜂蜜柚子加苦茶

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月19日
下一篇 2020年6月19日

相关推荐