A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Silent_memory 于 2014-4-17 17:00 编辑

         

在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承。


继承

  在讲解之前我们先看一个例子。


  1. <font color="rgb(85, 85, 85)"><font face="Arial">public class Wife{
  2.         private String name;
  3.         private int age;
  4.         private String sex;
  5.         private Husband husband;
  6. }
  7. public class Husband{
  8.         private String name;
  9.         private String sex;
  10.         private int age;
  11.         private Wife wife;
  12.         /** 省略属性的set  get***/
  13. }</font></font>
复制代码

从这里我们可以看出,Wife、Husband两个类除了各自的husband、wife外其余部分全部相同,作为一个想最大限度实现复用代码的我们是不能够忍受这样的重复代码,如果再来一个小三、小四、小五……(扯远了大笑)我们是不是也要这样写呢?那么我们如何来实现这些类的可复用呢?利用继承!!

  首先我们先离开软件编程的世界,从常识中我们知道丈夫、妻子、小三、小四…,他们都是人,而且都有一些共性,有名字、年龄、性别、头等等,而且他们都能够吃东西、走路、说话等等共同的行为,所以从这里我们可以发现他们都拥有人的属性和行为,同时也是从人那里继承来的这些属性和行为的。

  从上面我们就可以基本了解了继承的概念了,继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。


  1. <font color="rgb(85, 85, 85)"><font face="Arial">public class Wife extends Person{
  2.         private Husband husband;
  3. }
  4. public class Person{
  5.         protected String name;
  6.         protected int age;
  7.         protected String sex;
  8. }
  9. public class Husband extends Person{
  10.         private Wife wife;
  11. }</font></font>
复制代码



对于Wife、Husband使用继承后,除了代码量的减少我们还能够非常明显的看到他们的关系。

  继承所描述的是“is-a”的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示A继承B,其中B是被继承者称之为父类或者超类,A是继承者称之为子类或者派生类。

  实际上继承者是被继承者的特殊化,它除了拥有被继承者的特性外,还拥有自己独有得特性。例如猫有抓老鼠、爬树等其他动物没有的特性。同时在继承关系中,继承者完全可以替换被继承者,反之则不可以,例如我们可以说猫是动物,但不能说动物是猫就是这个道理,其实对于这个我们将其称之为“向上转型”,下面介绍。

诚然,继承定义了类如何相互关联,共享特性。对于若干个相同或者相识的类,我们可以抽象出他们共有的行为或者属相并将其定义成一个父类或者超类,然后用这些类继承该父类,他们不仅可以拥有父类的属性、方法还可以定义自己独有的属性或者方法。

  同时在使用继承时需要记住三句话:

  1、子类拥有父类非private的属性和方法。

  2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

  3、子类可以用自己的方式实现父类的方法。(以后介绍)。

  综上所述,使用继承确实有许多的优点,除了将所有子类的共同属性放入父类,实现代码共享,避免重复外,还可以使得修改扩展继承而来的实现比较简单。

  


1 个回复

倒序浏览
顶一个!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马