网站首页 > java教程 正文
难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.相同特性
大家看看以下四种物品有什么相同之处。
纸箱:
木箱:
布箱:
铁箱:
上面罗列了纸箱、木箱、布箱、铁箱四种箱子,分别对应着四种不同的描述。它们有各自的特性和行为。
我们来看看它们有什么相同点和不同点:
相同点:都有名字、材质、外观颜色;都可以存储物品。
不同点:名字不同,材质也不同,外观颜色也不同。
用类来描述它们:
纸箱:
木箱:
布箱:
铁箱:
大家发现了吗,有大量相同的代码,如果我们把它们的共性提取出来放在一个公共的地方,让它们都不必自己拥有这些共性的代码,这样就不用每个类里面都写一份相同的代码。在Java中使用继承就可以实现这个功能。
2.继承
继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。
继承的格式:
继承会自动得到基类中所有的字段和方法。
派生子类的类称为超类(也是基类或父类):
从另一个类派生的类称为子类(也是派生类,扩展类或子类):
Object除外,没有超类,每个类都有一个且只有一个直接超类(单继承)。在没有任何其他显式超类的情况下,每个类都隐式地是一个子类Object。
3.Java类层次结构
在java.lang包中定义的Object类定义并实现所有类共有的行为 - 包括我们编写的。 在Java平台中,许多类直接从Object派生,其他类派生自其中一些类,依此类推,形成类的层次结构。
Java平台中的所有类都是Object的后代。
在层次结构的顶部,Object是所有类中最通用的。 层次结构底部附近的类提供更全面的行为。
4.继承案例一
我们现在写一个父类,拥有四种箱子的共性部分,然后让他们继承父类。
箱子类:
纸箱:
木箱:
布箱:
铁箱:
大家可能看到父类Box里面方法多出了好多,哪些get、set方法是封装必备方法,要是分别写在四个子类里面那还要多,所以不要觉得代码变得更多了。
那么接下来我们去创建四个箱子的对象看看,分别显示输出它们。
Main类:
结果:
从运行结果来看,分别显示输出四种不同类型的箱子。
5.在构造方法中进行初始化
当然了,你也可以把初始化工作放在构造方法中去做:
纸箱:
木箱:
布箱:
铁箱:
6.将初始化值通过构造方法参数形式传入
你还可以将初始化值作为工作方法的参数传入进来:
纸箱:
木箱:
布箱:
铁箱:
我们看到还是有重复的代码,还能进一步优化,在后面讲解“继承与构造方法”时会具体说明。
5.继承案例二
狗:
猫:
用类来描述一下它们:
Dog类:
Cat类:
狗和猫它们也有共性,它们都是动物,我们也能抽取共性。
动物类:
我们看到只有狗和猫共性的事物,没有看家和抓老鼠方法,因为不是所有的动物都会看家和抓老鼠。看家是狗特有的,抓老鼠也是猫特有的。这两个方法不能抽取出来。
继承之后,狗和猫的类分别如下:
Dog类:
Cat类:
看起来简洁很多。
我们来创建出旺财和小灰灰:
Main类:
结果:
从运行结果来看,准确无误。
如果我们从构造方法里面传递参数进行初始化更好:
Dog类:
Cat类:
Main类:
结果:
从运行结果来看,准确无误。
我们可以看到这两个继承案例,都是抽取共同特性,代码得到服用。所以,可以将继承视作是对类的复用。
下一章我们将继续探讨继承中特性:字段在继承中的变化。
总结
- 面向对象三大特性是封装、继承、多态。
- 继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。
- 继承会自动获得父类所有的字段和方法。
- Java平台中的所有类都是Object的后代。
- 可以将继承视作是对类对复用。
至此,Java中继承相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第四十五章:super关键字
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!
- 上一篇: java继承(java继承会继承哪些东西)
- 下一篇: 保姆级教程,彻底搞懂Java继承的五种用法
猜你喜欢
- 2024-10-03 Java中的继承关系(java中的继承关系是)
- 2024-10-03 Java面向对象之继承(java面向对象继承例题)
- 2024-10-03 「Java入门」十八 面向对象的三大特征之一-继承
- 2024-10-03 [Java基础]09.继承(java基础案例教程第二版)
- 2024-10-03 Java中的继承、封装、多态 #Java开发
- 2024-10-03 Java中的继承与组合(java中继承的概念以及使用继承的好处)
- 2024-10-03 《极简Java新手编程之道》8.1.1 Java语言中实现继承
- 2024-10-03 Java:类与继承(java类与继承抽象类)
- 2024-10-03 Java基础——面对对象-继承(面对对象的特征有哪些方面java基本数据类型有哪些)
- 2024-10-03 你真的熟悉Java中的继承与多态?给你几分钟能回答上来?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)