您的位置:首页 > 编程语言 > Java开发

熬之滴水穿石:JAVA的世界(4)

2013-05-30 08:15 162 查看
16--继承

用JAVA写程序时,已经感受到面向对象的威力和破坏力了。它如同一把双刃剑运用得好你会感觉代码和程序结合的相得益彰,运用得不好会出现各种各样的问题,为了对象而对象。现在我觉得但凡觉得面向对象的设计不合理的时候,多半你还没有悟透什么是面向对象。其实悟透也很容易,万事万物皆对象从源头抓起,好了,让我们一起看看继承吧!

继承是JAVA程序员在代码编写中运用最多的也是最多普遍的方法了。如果要你说继承有什么好处,我想大家首先想到的是继承能防止让子类出现重复的代码。在设计继承类时,我们通常会把共同的类放在某个类中,然后我们可以称该类为父类,继承它的类为子类。继承关系的存在意味着子类继承了父类的方法,即继承了我们前一个章节说到的实例变量和方法。当我们编写的代码涉及到多个相同基本类型共享时就要考虑用继承关系了。

可以肯定的是这是继承方法中最大的优点,然而真正做好继承的话!你还必须有个清晰的思路,按照这个思路一步一步的进行的话,我想还是能确保你设计出好的类,并且能够完成很好的继承。首先我们还是要找出设计该类共同的属性和方法,这一点相对来说还是很容易的。但是如果进一步深入的话就要看程序员各自的领悟程度了,其实实现这一步基本就已经达到了防止子类出现重复代码了。很多程序员在做到这一步时就以为继承类设计就已经做完了,其实还差得很远很远。

然后我们必须找出继承类之间共同的状态和行为,将共同的实例变量和方法都加进去。这个过程其实没那么简单,关键看你怎么设计。什么方法都加进去的话,往往会造成类方法爆炸。设计继承类时一定考虑一个层次关系,层次关系的复杂度决定你这个继承类的强度。一般写应用软件,我个人感觉层次度不宜过高,组建系统架构代码时可以考虑层次增加。当然这里面有一种子类“覆盖”的用法,通过这种方法可以让子类有自己不同的方法。

面向对象的设计方法是一个原理,抽象方法则是基本功。抽象方法其实就是要在众多的继承类中寻找更多的可以归纳组织供程序代码共同使用的部分。这是一个非常深究你抽象能力的工作,我的感受还是那句:万物联系实际你总能找到抽象的方法。通过共同行为的子类找出更多的抽象机会,确认好继承层次是设计继承类的关键。当程序运行时,当调用该对象引用的方法时,一般会以继承类的底层往高处找方法。继承类没有的方法,就往上一个类去找直到找到为止。

类继承是有相应的方法来检测的就是我们众所周知的IS-A的关系,就是当一个类继承另一个类时,我们可以说是子类继承父类。eg:animal有一个类叫A类,有一个叫dog类。用IS-A检测很简单 dog是animal则是OK,反过来animal是dog则是错误的。这种方式有助于你检验你的继承关系是否正确。还有一种Has-A的关系,则是父类对应子类的关系,像animal拥有dog类是OK的,但dog类拥有animal则是Error的。IS-A和HAS-A其实就是我在delphi一章节提起过的向上、向下转型,当然更深入的就会进入泛型。

子类继承父类的成员包括实例变量和方法,当然父类可以通过存取权限决定子类是否能继承某些方法。在JAVA中继承类之间可用4种修饰词来作限制:private,default,protected,public,这四种方法也是依次由强变弱的。其中private很好理解,基本上就是在类内可以用,继承类不可用。default可以在类中使用,也可以在同一个包中的类使用。protected则是可以类中使用,在一个包内也可以用,在继承类中也可以使用。public则是公共的方法。我理解到继承关系最大的好处,可以约定子类可使用哪些方法,哪些方法不能用。在这样的约定的下,在面向对象世界里一个最为重要的理论就会有用武之地了,那就是多态........

(未完待续.........)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: