• 类方法熬之滴水穿石:JAVA的世界(4)


    这两天笔者几篇文章介绍了改类方法的文章. 关联文章的地址

                                                                      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则是公共的方法。我理解到继承关系最大的利益,可以约定子类可应用哪些方法,哪些方法不能用。在这样的约定的下,在面向对象世界里一个最为主要的理论就会有用武之地了,那就是多态........

                                                        (未完待续.........)

    文章结束给大家分享下程序员的一些笑话语录: 姿势要丰富,经常上百度!

    --------------------------------- 原创文章 By
    类和方法
    ---------------------------------

  • 相关阅读:
    如何安装ArchLinux
    状态模式
    iOS设备的越狱方法
    浅析Windows安全相关的一些概念
    项目做成jar包
    JavaScript包装对象
    node.js系列笔记之node.js初识《一》
    使用Reactive Extensions(Rx),对短时间内多次发生的事件限流
    in和exists哪个效率高本人测试证明
    Asp.net MVC使用Filter解除Session, Cookie等依赖
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3109125.html
Copyright © 2020-2023  润新知