首页 > 基础资料 博客日记

20220722_第七小组_张红睿_Java帝国

2023-07-29 17:11:56基础资料围观301

这篇文章介绍了20220722_第七小组_张红睿_Java帝国,分享给大家做个参考,收藏Java资料网收获更多编程知识

Java帝国崛起篇——继承

​ 继封装出现后,类们都有了自己美好的归宿,但是由于很多类的一些属性和功能基本上一样,比如:

​ 在这种情况下,由于Dog、Animal、Cat都有一些共同的属性和方法,如果把这些都归结在一个类中,是不是会更好呢?根据人类世界的父子关系,而且Dog和Cat在本质上也是属于Animal的,所以,经过“面向对象”大长老的思考,继承诞生了!

​ 什么是继承呢?

​ 俗话说的话,子承父业。下面这张图便很好地体现了继承的精髓。

​ 继承,是事物与事物之间的关系,在帝国里尝尝被描述为“is--a”,下面是类的三大关系:

​ 继承,在帝国里,甚至是这片拜纳睿大陆,其意义也几乎相同:作为子类的对象可以使用大部分父类的属性和方法,而且能达到高内聚低耦合的目的。

​ 下面面向对象大长老振臂一挥,转瞬间三个原始的类出现在大堂之中,分别为Dog、Cat、Animal。

​ “参见大长老!”三个类异口同声地说道。下面是Animal类的源代码:(Dog和Cat类的源代码和Animal的一致)

​ “因为在人类世界中你们两个也是动物的一种,所以你们可以通过国王提供的extends关键字来进行继承Animal类以减少你们的代码量。”大长老对着Dog和Cat说道。

​ 想想也是,如果有一种方法可以来表达类与类之间的关系并达到减少代码冗余度的情况下,是完全可行的,更何况在人类世界中本来就有这样的继承关系,更人性化。

​ 而具体该如何操作呢?就是要将相同的属性和方法集中到父类中,然后通过继承,Dog和Cat继承Animal便可以使用Animal提供的非私有访问权限的属性和方法了。所以我们以Dog类为例:

​ 故:

​ 这样一看,代码简洁了很多,而且因为继承了Animal,我们还可以通过Animal dog = new Dog();的方式声明Dog类的实例。

​ 而代码中的super也是帝国中的一个关键字,但它与this有所不同:

this super
属性 访问本类的属性,如果没有则访问父类的 访问父类的属性
方法 访问本类的方法,如果没有则访问父类的 访问父类的方法
方法 调用本类的构造器,必须放在构造方法的首行 调用父类的构造器,必须放在子类构造方法的首行
对象 表示当前对象 不能表示对象

注意:

  1. 二者都不能调用static修饰的属性、方法、代码块,因为它们是属于类的,可直接调用或通过类名.xx的方式调用。

  1. 因为它们必须放在构造方法的首行,所以二者不能同存于一个构造方法中。

  1. 在实例化子类对象调用子类对应构造方法时,无论有没有super(),都会先调用父类的构造函数:

​ 与此同时,Cat类也改好了自己的代码,Cat和Dog类看了看现在的代码异口同声说道,“哇,感觉真好,我们的代码量又减少了好多,而且如果要加入新的属性或方法,如果这是所有Animal所共有的,还可以直接加在Animal类中,我们也可以通过this或super成功调用啦!”

​ “没错”。大长老说道,“这就是继承的特点,找出几个类的共性,比如你们的name、age还有你们方法drink(),将这些共性统一在一个类中,这里是Animal类,并让你们继承Animal类,这样你们也就继承了这些共性,并可在你们的类中使用。”

​ “哈哈哈,这可真是太好了,这样我们的世界就更高内聚、低耦合啦!”Animal、Cat、Dog一起说道。

​ “哈哈哈,这还仅仅是刚开始呢,以后会有更多的新知识等着你们接收呐!”大长老面向对象语重心长地说道。

​ 与此同时,在那个熟悉的方向:“哦?super也要出来了吗,我的老父亲啊,您还好吗...”this说道。


文章来源:https://www.cnblogs.com/blog-J/p/16505995.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云