前言
之前文章提到了,三大特性面试官问的最多的一般是多态,所以对于继承我们也不过多的赘述;
什么是继承
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
解释一下:
继承所描述的是“is-a”的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示A继承B,其中B是被继承者称之为父类或者超类,A是继承者称之为子类或者派生类。
引用think in java 中的例子:
虽说导出类与基类具有相同的类型,但导出类可以有自己的实现,以区分出不同于基类的行为;
有两种方式可以使基类与导出类产生差异。
1)直接在导出类中添加新的方法(这些新的方法并不是导出类的一部分)。
2)改变现有基类的方法和行为-覆盖
继承的特点
1)子类拥有父类的非private属性和方法
2)子类可以通过两种方式区分和父类的差异(即上述两种),也就是说子类具有一定的扩展性
3)java只允许单继承,即子类只能继承一个父类
继承的缺点
1.父类变,子类就跟着变;因为子类具有与父类相同的类型,所以这个地方有一种牵一发而动全身的感觉
2.继承和封装是一种悖论,可以说继承破坏了封装,因为继承使得父类的方法和属性对子类是透明的,安全性不高
3.继承是一种强耦合关系
再此继承就不多做赘述了;
如果想详细了解继承,可参见:
http://www.cnblogs.com/chenssy/p/3354884.html
写的比较详细;
关于面试
面试的话继承一般会问:
什么是继承;
继承的特点;
什么情况下使用继承;
前两个的话上面已经赘述,关于第三点:当需要用到向上转型,即子类到父类的向上转型,可考虑用继承,非这种情况下,慎用继承;
关于向上转型,会在下节为大家讲到;
写的有不对的地方还请大家指出,我们会第一时间更正, 您的支持是我们努力的更新的动力源泉,欢迎大家将面试过程中遇到的问题发给我们,我们会第一时间整理更新,希望能帮忙更多正在找工作的朋友;