java提高篇之理解java的三大特性——继承-编程开发技术

java提高篇之理解java的三大特性——继承-编程开发技术

ID:30769093

大小:55.00 KB

页数:6页

时间:2019-01-03

java提高篇之理解java的三大特性——继承-编程开发技术_第1页
java提高篇之理解java的三大特性——继承-编程开发技术_第2页
java提高篇之理解java的三大特性——继承-编程开发技术_第3页
java提高篇之理解java的三大特性——继承-编程开发技术_第4页
java提高篇之理解java的三大特性——继承-编程开发技术_第5页
资源描述:

《java提高篇之理解java的三大特性——继承-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java提高篇Z理解java的三大特性——继承-编程开发技术java提高篇之理解java的三大特性——继承原文出处:chenssy在《Thinkinjava》中有这样一句话:复用代码是Java众多引人注目的功能之-o但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它述必须能够做更多的事情。在这句话屮最引人注口的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性Z―■—继承。继承在讲解之前我们先看一个例子,该例子是前篇博文(java提高篇之理解java的三大特

2、性一一封装)的。从这里我们可以看出,Wife、Husband两个类除了各自的husbanckwife外其余部分全部相同,作为一个想最大限度实现复用代码的我们是不能够忍受这样的重复代码,如果再来一个小三、小四、小五……(扯远了月)我们是不是也要这样写呢?那么我们如何来实现这些类的可复用呢?利用继承!!首先我们先离开软件编程的世界,从常识中我们知道丈夫、妻子、小三、小四…,他们都是人,而且都有一些共性,有名字、年龄、性别、头等等,而且他们都能够吃东西、走路、说话等等共同的行为,所以从这里我们可以发现他们都拥冇人的属性和行为,同时也是从人那

3、里继承来的这些属性和行为的。从上面我们就可以基木了解了继承的概念了,继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。对于Wife、Husband使用继承后,除了代码量的减少我们还能够非常明显的看到他们的关系。继承所描述的是“isp”的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示A继承B,其中B是被继承者称Z为父类或者超类,A是继乐者称Z为子类或者派生类。实际上继承

4、者是被继承者的特殊化,它除了拥有被继承者的特性外,还拥有口己独有得特性。例如猫有抓老鼠、爬树等其他动物没有的特性。同吋在继承关系中,继承者完全可以替换被继承者,反之则不可以,例如我们可以说猫是动物,但不能说动物是猫就是这个道理,其实对于这个我们将其称Z为“向上转型”,下而介绍。诚然,继承定义了类如何相互关联,共享特性。对于若干个相同或者相识的类,我们可以抽象出他们共有的行为或者属相并将其定义成-个父类或者超类,然后用这些类继承该父类,他们不仅可以拥有父类的属性、方法还可以定义自己独冇的屈性或者方法。同时在使用继承时需要记住三句话:1、

5、了类拥有父类非private的属性和方法。2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。3、子类口J以用自己的方式实现父类的方法。(以后介绍)。综上所述,使用继承确实有许多的优点,除了将所有子类的共同属性放入父类,实现代码共享,避免重复外,还可以使得修改扩展继承而来的实现比较简单。诚然,讲到继承一定少不了这三个东西:构造器、protected关键字、向上转型。构造器通过前面我们知道了类可以继承父类的属性和方法,除了那些private的外还有一样是子类继承不了的一构造器。对于构造器而言,它只能够被调用,而不能被继承。调用父类

6、的构造方法我们使用super()即可。对于了类而已,其构造器的止确初始化是非常重要的,而且当且仅当只有一个方法可以保证这点:在构造器屮调用父类构造器来完成初始化,而父类构造器具冇执行父类初始化所需要的所有知识和能力。publicclassPerson{protectedStringname;protectedintage;protectedStringsex;Person(){System,out.printin("PersonConstrctor...〃);publicclassHusbandextendsPerson{privat

7、eWifewife;Husband(){System・out.printin("HusbandConstructor.../z);}publicstaticvoidmeiin(String[]args){Husbandhusband=newHusband();}}Output:PersonConstrctor...HusbandConstructor...通过这个示例可以看岀,构建过程是从父类“向外”扩散的,也就是从父类开始向子类一级一级地完成构建。而且我们并没有显示的引用父类的构造器,这就是java的聪明Z处:编译器会默认给子类调用

8、父类的构造器。但是,这个默认调用父类的构造器是有前捉的:父类冇默认构造器。如果父类没有默认构造器,我们就要必须显示的使用super()来调用父类构造器,否则编译器会报错:无法找到符合父类形式的构造器。publicclas

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。