继承, 从世俗的角度来解释便是子女得到父辈的财产或物品. 程序中, 继承是指两个类的从属关系, 它可以使多种事物之间形成一种关系体系. 例如贵宾和泰迪都是属于宠物犬, 程序中便可以描述为贵宾和泰迪继承自动物. 这篇要文章主要理清三个问题:
继承的概念是什么?
继承中如何重写父类的方法?
关键字 super 如何使用?
先看第一个问题, 在 Java 中类的继承是指在一个现有类的基础上去构建一个新的类, 构建出来的类被称作子类, 现有的类被称作父类, 子类会自动拥有父类所有课继承的属性和方法. 同时, 程序中通常用 extends 关键字来声明一个继承另一个类, 下面就通过一个案例来演示:
继承的基本使用. JPG
上面代码的运行结果是 "动物的叫声" 和 "我的名字叫贵宾". 其中 Dog 类通过 extends 继承了 Animal 类, 这样 Dog 类便是 Animal 类的子类. 从运行结果可以看出, 子类虽然没有定义 name 属性和 shout 方法, 但是却能访问这两个成员, 这也就说明了子类在继承父类的时候, 会自动拥有父类的所有成员. 但也有一些问题需要注意下:
Java 中, 类只支持单继承不允许多重继承, 也就是说一个类只能有一个父类.
多个类可以继承同一个父类.
可以多层继承, 即一个类的父类可以去继承另外的父类.
Java 中的子列和父类只是一种相对概念.
接下来看第二个问题, 继承中重写父类方法是怎么回事.
我们知道继承关系中, 子类会自动继承父类中定义的方法, 但有时在子类需要对继承的方法进行修改, 即重写父类方法. 好比父亲的理想, 如果儿子不喜欢, 可以去追求自己的梦想.
上面代码中, Dog 类继承了 Animal 类中的 shout 方法, 调用时会打印 "动物的叫声", 这明显不是描述一种具体动物的叫声, Dog 发出的叫声应该是 "汪汪汪..." 为了解决这个问题, 可以在 Dog 类中重写父类 Animal 的 shout() 方法, 具体代码如下:
继承中重写父类方法. JPG
运行结果是 "汪汪汪...". 从运行结果可以看到, 在调用 Dog 类对象的 shout 方法是, 只会调用子类重写后的方法.
最后来看第三个问题, 如何正确使用 super 关键字?
从上一个代码中可以看到, 当子类重写父类的方法后, 子类对象将无法访问父类被重写的方法, 为了解决这个问题, Java 中专门提供一个 super 关键字用于访问父类的成员. super 的作用主要体现在两个方面:
使用 super 关键字调用父类的成员变量和方法, 格式如下
super. 成员变量;
super. 成员方法 ({参数 1, 参数 2...});
使用 super 关键字调用父类构造方法, 格式如下
super.({参数 1, 参数 2...});
来源: http://www.jianshu.com/p/9e23309644ca