•通过代码深入了解继承

在讲解之前我们先看一个例子,该例子是前篇博文的。

Husband.java:

public classHusband {/** 对属性的封装

* 一个人的姓名、性别、年龄、妻子都是这个人的私有属性*/

privateString name ;privateString sex ;private intage ;privateWife wife;

}

Wife.java:

public classWife {privateString name;private intage;privateString sex;privateHusband husband;

}

从这里我们可以看出,Husband、Wife 两个类除了各自的 wife、husband 外其余部分全部相同;

作为一个想最大限度实现复用代码的我们是不能够忍受这样的重复代码;

果再来一个小三、小四、小五……(扯远了

)我们是不是也要这样写呢?

那么我们如何来实现这些类的可复用呢?利用继承!!

首先我们先离开软件编程的世界,从常识中我们知道丈夫、妻子、小三、小四…,他们都是人;

而且都有一些共性,有名字、年龄、性别等等,而且他们都能够吃东西、走路、说话等等共同的行为;

所以从这里我们可以发现他们都拥有人的属性和行为,同时也是从人那里继承来的这些属性和行为的。

从上面我们就可以基本了解了继承的概念了,继承是使用已存在的类的定义作为基础建立新类的技术;

新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

新建一个 Person 类;

Person.java:

public classPerson {privateString name ;privateString sex ;private intage ;

}

让 Husband类 和 Wife类 继承这个类:

public class Husband extendsPerson{privateWife wife;

}

public class Wife extendsPerson{privateHusband husband;

}

在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的;

对于 Husband、Wife 使用继承后,除了代码量的减少我们还能够非常明显的看到他们的关系。

继承所描述的是 “is-a” 的关系;

如果有两个对象 A 和 B,若可以描述为 “A是B”;

则可以表示 A 继承 B ,其中 B 是被继承者称之为父类或者超类,A 是继承者称之为子类或者派生类。

实际上继承者(A) 是被继承者(B) 的特殊化,它除了拥有被继承者(B) 的特性外,还拥有自己独有得特性。

例如猫有抓老鼠、爬树等其他动物没有的特性。

同时在继承关系中,继承者(A) 完全可以替换被继承者(B),反之则不可以;

例如我们可以说猫是动物,但不能说动物是猫就是这个道理,其实对于这个我们将其称之为 “向上转型”,下面介绍。

诚然,继承定义了类如何相互关联,共享特性。

对于若干个相同或者相似的类,我们可以抽象出他们共有的行为或者属相并将其定义成一个父类(或者超类);

然后用这些类继承该父类,他们不仅可以拥有父类的属性、方法还可以定义自己独有的属性或者方法。

同时在使用继承时需要记住三句话:

1、子类拥有父类非private的属性和方法。

2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3、子类可以用自己的方式实现父类的方法。(以后介绍)。

综上所述,使用继承确实有许多的优点,除了将所有子类的共同属性放入父类,实现代码共享,避免重复外;

还可以使得修改扩展继承而来的实现比较简单。

诚然,讲到继承一定少不了这三个东西:构造器、protected关键字、向上转型。

java如何理解继承性_理解 Java 的三大特性之继承相关推荐

  1. 大数据必学Java基础(四十):面向对象三大特性之一继承(Inheritance)

    文章目录 面向对象三大特性之一继承(Inheritance) 一.列举案例说明 1.类是对对象的抽象

  2. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  3. java 集成_java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  4. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  5. java 包装类可以被继承_【Java基本功】一文了解Java中继承、封装、多态的细节...

    本节主要介绍Java面向对象三大特性:继承 封装 多态,以及其中的原理. 本文会结合虚拟机对引用和对象的不同处理来介绍三大特性的原理. 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来 ...

  6. java三大特性 继承_java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. Java提高篇 —— Java三大特性之继承

    一.前言 在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事 ...

  8. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  9. java提高篇四_(转)java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

最新文章

  1. 成功解决ForkingPickler(file, protocol).dump(obj) TypeError: can‘t pickle Environment objects
  2. Java中设计模式之装饰者模式-2
  3. 服务器异常下电文件系统,SUN服务器Solaris异常情况下恢复操作步骤(8页)-原创力文档...
  4. MFC消息详解 (WindowProc|OnCommand|OnNotify)
  5. ubuntu下如何查找某个文件的路径
  6. 一个行外人看中国的电子竞技
  7. 重启php-fpm的方法
  8. linux查看redis内存,Linux查看redis占用内存的方法
  9. 【JAVA】家庭记账系统
  10. 宝塔linux 搭建rtmp+ffmpeg转流直播服务器
  11. WIN7 安装使用远程服务器管理工具-如DHCP、AD域、HyperV、远程桌面
  12. Argument(s) are different! Wanted:
  13. VC/MFC拖动窗口任意位置移动窗口
  14. 海康威视 2021 春招面试题
  15. 将SVG文件转换为XML文件
  16. AI是怎么样的演算的呢?预测《权力游戏》中角色的生死
  17. java写入excel模板_java实现赋值excel模板,并在新文件中写入数据,并且下载
  18. Ubuntu 18.04中切换中英文输入法的快捷键设置
  19. 怎样下载微信公众号封面图片、视频、音频资源?
  20. 勒索病毒java解密_被CrazyCrypt2.1勒索病毒加密了?已有一键解密工具!

热门文章

  1. Linux最小体积mysql安装_Linux下安装MySQL以及一些小坑
  2. argb888与rgb888转换程序_通过相机获取bayer 图像数据转换成RGB888数据并保存
  3. java并发编程实践 读书笔记_Java - 并发编程实践(读书笔记)
  4. visual studio解决方案是什么?
  5. python numpy.linspace() 使用介绍
  6. 使用 Jenkins 自动部署 java-web 应用到 Docker 容器(全过程)
  7. 中秋我用CSS写了个嫦娥奔月
  8. SpringBoot集成MybatisPlus 涵盖了目前流行的知识点!!!即用即cv即可!!!学过的同学,也可以存储作为工具!!
  9. Linux中查看正在使用的端口并强制删除占用端口
  10. matlab画三维图电磁场,利用matlab实现矩形波导电磁场分布图的绘制.doc