如何理解 Java 中的继承?
编点俏皮话吧,这样可以更好地理解继承(extends)——小明他爸是个七品芝麻官,那么小明就是个管二代;小明他爸当年走过雪山草地,越过鸭绿江边,那么小明就是个宏二代;小明他爸有三亩地,拆迁后分了 10 套房,那么小明就是柴二代。
// 老华
class Laohua {}
// 小华
class Xiaohua extends Laohua {}
请允许我继续编下去:小华和小华他爸都是手艺人,特别喜欢画画。小华他爸是自学成才,而小华由于继承了他爸的好基因,属于天才型;等小华长到 20 岁的时候,他觉得不能就这么一直和他爸一样只画风景画,因为那样的话,他取得的成就注定不会高过他爸。于是呢,小华改画人像画了,经过十年的努力,小华在艺术界的地位终于超过了他爸,人称“华·芬奇”。
按照 Java 术语来看,小华由画风景画改画人像画就属于“重写(overriding)”的行为——子类和父类产生差异的一种方法。
class Laohua {public void paint() {System.out.println("风景画");}
}
class Xiaohua extends Laohua {public void paint() {System.out.println("人像画");}
}
小华画呀画呀,就这么一直画到了 40 岁,他感觉到画画已经不能使他感到满足了。于是他就开始了探索,希望能够找到一个新的领域,慰藉他那不羁的才华。
有一天,小华在网上看到了一篇文章,题目叫做“黑客与画家”,作者署名为“沉默王二,一枚特别有趣的程序员”。他觉得这篇文章写得真不错耶,于是小华就下定决心,立志一年后成为一名“黑客”。
按照 Java 编程思想来看,小华和他爸就不再只是纯粹的替代关系了(is-a
),变成了一种相似的关系(他们都是画家,但小华又是一名黑客,有点 is-like-a
的意思)。
class Laohua {public void paint() {System.out.println("风景画");}
}
class Xiaohua extends Laohua {public void paint() {System.out.println("人像画");}public void hack() {System.out.println("黑客");}
}
Java 中的继承可以分为单继承、多重继承和不同类继承同一个类。
1)单继承
2)多重继承
3)不同类继承同一个类
上一篇:什么是面向对象编程(OOP)
下一篇:吃人的那些 Java 名词:对象、引用、堆、栈
如何理解 Java 中的继承?相关推荐
- 一文带你理解Java中Lock的实现原理
转载自 一文带你理解Java中Lock的实现原理 当多个线程需要访问某个公共资源的时候,我们知道需要通过加锁来保证资源的访问不会出问题.java提供了两种方式来加锁,一种是关键字:synchron ...
- Java重载和重写6_深入理解Java中的重写和重载
深入理解Java中的重写和重载 重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念.但是对于新手来说也比较容易混淆.本文通过两个简单的例子说明了他们之间的区别. ...
- 深入理解Java中的IO
本文转载自:深入理解Java中的IO 为了方便理解与阐述,先引入两张图 在整个Java.io包中最重要的就是5个类和一个接口. 5个类指的是File.OutputStream.InputStream. ...
- 深入理解 Java中的 流 (Stream)
个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:深入理解 Java中的 流(Stream)机制 最近在看<Hadoop:The Definitive Gu ...
- Java中的继承 与 多态(中)
先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题, 1.继承是什么 2.super关键字 3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...
- java中io是什么_深入理解Java中的IO
深入理解Java中的IO 转载自:http://blog.csdn.net/qq_25184739/article/details/51205186 本文的目录视图如下: Java IO概要 a.Ja ...
- 理解Java中的IO
粗略列出并理解Java中的IO 引言: 对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务 < Thinking in Java > 本文的目录视图如 ...
- 深入理解Java中的String(原地址https://www.cnblogs.com/xiaoxi/p/6036701.html)
深入理解Java中的String 一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class Stringimplem ...
- 深入理解Java中的内存泄漏
理解Java中的内存泄漏,我们首先要清楚Java中的内存区域分配问题和内存回收的问题本文将分为三大部分介绍这些内容. Java中的内存分配 Java中的内存区域主要分为线程共享的和线程私有的两大区域: ...
- java 的继承_关于java中的继承
我们都知道Java中的继承是复用代码.扩展子类的一种方式,继承使得Java中重复的代码能够被提取出来供子类共用,对于Java程序的性能以及修改和扩展有很大的意义,所以这是一个非常重要的知识点. 那么对 ...
最新文章
- 揭秘|超乎想象!未来50年将出现的九大黑科技……
- ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测
- 洛谷P4413 R2
- Ubuntu终端远程连接计算机(Linux)
- linux下本地的源的格式,[Linux]CentOS7搭建/配置:YUM仓库/源[本地源/HTTP源/自建源仓库...
- MYSQL数据损坏修复方法
- lombok var_使用var,Lombok和Fluxtion轻松处理事件
- 每个人都应该使用的Python 3中被忽略的3个功能
- 解决window的bat脚本执行出现中文乱码的问题
- 贝佐斯首次展示月球着陆器 蓝色起源2024年载人登月
- 统计学习方法读书笔记16-SVM支持向量机
- 内网穿透:看这一篇就够了!
- Fedora9中安装中文输入法
- 湖南科技大学计算机考研难吗,湖南科技大学考研难吗
- 空间里相片批量导入u盘_怎样将U盘内相片弄到QQ空间的相册内
- ASIC设计流程相关
- TLD(Tracking-Learning-Detection)一种目标跟踪算法(相关资料很全)
- Allegro中显示两种单位方法
- 达摩院 | DAMO-YOLO:兼顾速度与精度的新目标检测框架
- neon 指令 c语言,Neon指令集优化快速入门教程
热门文章
- os.system和os.popen函数的区别
- Linux 服务器后台运行.jar程序
- android 缺半圆形头像,圆形头像设计
- 3dmax材质编辑器模糊字有重影怎么解决?
- 电脑键盘equals在哪个位置_【电脑键盘在哪里调出来】电脑键盘在哪里找_电脑模拟键盘在哪里...
- QQ再次被大规模盗号
- oracle建表复制表结构,ORACLE复制表结构
- Java多线程系列--“JUC线程池”03之 线程池原理(二)
- 凑数算法 c语言,算法题解 - 牛客编程巅峰赛S1第4场 - 黄金钻石组
- 每一代内存的读写速度