面向对象第二个特征-继承(Inheritance)
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.java中的继承概述
1>.继承概述
多个类种存在相同属性和行为时,讲这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只要继承单独的那个类即可。
多个类可以称为子类,单独的这个类称为父类或者超类。
子类可以直接范围父类中的非私有的属性和行为。
通过extends关键字让类与类之间产生继承关系。
继承的出现提供了代码的复用性,让类鱼类之间产生了关系,提供了多态的前提。
2>.继承案例
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.org.yinzhengjie.extemdPackage; /** * 定义Person父类 * @author 尹正杰 * */ public class Person { String name; int age; }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.org.yinzhengjie.extemdPackage; /** * 定义Worker子类 * @author 尹正杰 * */ public class Worker extends Person{ public void work() { System.out.println("working..."); } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.org.yinzhengjie.extemdPackage; /** * 定义Student子类 * @author 尹正杰 * */ public class Student extends Person { public void study() { System.out.println("study..."); } }
二.继承的特点
(1)Java只支持单继承,不支持多继承,换句话说,一个类只能有一个父类,不可以有多个父类。 如果一个类可以继承多个父类,那么其多个父类同时定义了相同的方法,那么此时子类到底该继承哪个父类呢?因此我们说Java很机制的规避了多继承的安全隐患。 class SubDemo extends Person{} //语法ok,Java支持单继承。 class SubDemo extends Student,Worker{} //语法错误(error),Java不支持多继承。 (2)Java支持多层继承(继承体系) Java虽然不可用同时多继承,但是子类继承的父类,其父类是可以继承其它父类的,但多次继承也会带来一个弊端就是最后继承的子类可能有很多属性和方法压根就用不上,为了解决这一问题,Java引入了Interface关键字,这个话题后续再谈。 class Student extends Person{} class Worker extends Student{} class SubDemo extends Worker{}
三.继承的体现
1>.什么时候定义继承
只要一个事物是另一个事物的一种,理论上都是可以用继承来体现的。
2>.定义继承注意事项
(1)不要仅为了获取其它类中的某个功能而去继承。
(2)类与类之间要有所属("is a")关系,即谁是谁的一种,比如Worker和Student都是属于Person。