
面向对象三大特征,分别是继承、封装和多态,继承可以降低代码编写的冗余度,提高编程的效率@mikechen
继承定义
继承(英语:inheritance)是面向对象软件技术中的一个概念,继承就是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。
继承它使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
在生活中,我们所理解的“继承”更多的是“子承父业”,就是儿子与父亲之间存在“继承”关系。

为什么需要继承
在生活中,很显然,儿子继承父亲的财产,可以少奋斗几十年甚至几辈子。
在编程中,继承有什么作用呢?如果仅仅只有两三个类,每个类的属性和方法很有限的情况下确实没必要实现继承。
但事情并非如此,事实上一个系统中往往有很多个类并且有着很多相似之处,比如学生和老师同属人,各个类可能又有很多个相同的属性和方法,这样的话如果每个类都重新写不仅代码显得很乱,代码工作量也很大。
这时继承的优势就出来了,可以直接使用父类的属性和方法,自己也可以有自己新的属性和方法满足拓展,父类的方法如果自己有需求更改也可以重写。

这样使用继承不仅大大的减少了代码量,也使得代码结构更加清晰可见,这就是继承存在的价值,大写的重点,好哇。
继承特性
- 子类拥有父类非 private 的属性、方法;
- 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
- 子类可以用自己的方式实现父类的方法;
- Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类
- 多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
继承实现举例
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下:
class 父类{
... //成员变量、成员方法
}
class 子类 extends 父类{
... //类体
}
下面我们一起来看一个现实中的例子:狗和猫都是动物,如果将狗、猫作为类,它们可以继承动物类很多的共同特性和行为。

1)动物类
/**
* 面向对象:继承
* @author mikechen
* */
class Animal{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
2)狗类
/**
* 面向对象:继承
* @author mikechen
* */
class Dog{
private String name;
private String sound;
public void setName(String name){
this.name = name;
}
public void setSound(String sound){
this.sound = sound;
}
public String getName(){
return this.name;
}
public String getSound(){
return this.sound;
}
}
3)引入继承
/**
* 面向对象:继承
* @author mikechen
* */
class Animal{
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
class Dog extends Animal{}
public class Test{
public static void main(String[] args){
Dog dog= new Dog();
dog.setName("狗");
System.out.println(dog.getName());
}
}
我们可以看出,子类可以在不扩展操作的情况下,使用父类的属性和功能。
关于mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。