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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 自闭宅男 中级黑马   /  2014-7-5 18:23  /  2513 人查看  /  16 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 自闭宅男 于 2014-7-8 20:31 编辑

  ------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ----------
在面向对象技术在实际开发中有很多的特性,总结起来最核心的特性主要有三个:封装,继承和多态。
一.封装性
    封装性在实际实现时,将复杂的内部结构隐藏起来,并未这组复杂的结构取一个统一的名称进行使用。在现实生活中有许多封装的例子,例如将电脑中有许多复杂的电路和内部存储磁片结构封装起来,并将这个结构取名叫硬盘,在平时使用中我们知道怎么对它存储数据进行了,一般没必要了解其内部构造及原理。
    在面向对象技术中,类是典型的封装特性的体现。类将许多功能和特性组合在一起,统一一个结构,并使用类(calss)代表这个结构。
    封装的最大好处是隐藏类的内部实现(内部结构)进行统一的管理,这样方便调用也降低了项目的难度。
    我们以生产一辆小汽车为例,可以把这个汽车看做要设计的整个软件项目,在实际的生产中,我们可以把小汽车的分解为很多组件,公司将各个组件的设计分发给各个部门,再由各个部门生产自己部门的组件,最后进行统一的组装。在生产过程中各个部门之间的关联性很小,如生产轮胎部门,不需要去生产发动机的部门了解发动机内部构造。这里每个组件就相当于一个类,每个类将自己内部封装起来,只通过名称使其他类了解该类的作用,并向其他类开放一些基本功能便于它们调用。
     一般我们将各类之间的关联程度称为耦合性,类和类之间的相互影响越低,其耦合性就越低。在具体的项目中,类与类之间的耦合性越低,项目总体的交流频率就降低了,从而降低了整个项目的复杂度,这也是程序设计人员一直以来追求的目标之一。
二.继承性
    ①在我们的普遍认知中,喜欢将许多有一定相似度的东西划在一起。在自然界中,
继承性也是十分普遍的一类现象。我们将许多动物分为科,门,属等,例如老虎属于猫科动物,小老虎就具有父辈老虎的体色等特点,在这里猫科动物是老虎这类动物的父类,他们之间有包含和被包含关系。也就是说只要两个类之间有包含关系,那么他们之间就存在继承。
    继承性提供了全新的类的设计方式,可以充分利用已有类中的方法和功能,这样极大地降低了代码的复杂度和可读性,对于大型项目的建立十分有益,式设计类的一种革命。同时很多技术的应用,也包含大量的继承,这样使得整个体系更加固定。
    ②继承语法:访问控制符[修饰符] class 类名 extends 父类名 {
    ············
    }
    ③实例代码:
     //Catamount.java
     public class Catamount {
        /*类型名称*/
     String Bodycolor;
     int age;
     }

     //Tiger.java
     public class Tiger extends Catamount {
     /*食物类型*/
     String food;
     }
     ④方法的覆盖
     在子类内部重新书写父类中方法的语法现象,称作方法覆盖(override)。
     方法覆盖在实际使用中保持了类的结构的统一,极大地方便了程序开发人员的使用,便于项目整体结构保持统一,便于项目维护。在进行方法覆盖时,子类的方法和父类的方法声明相同,而且子类的方法的限制不能比父类的方法严格。例如不能使用比父类更大的访问控制符,或者抛出比父类更多的异常(Exception)。
     恰当的使用继承便于项目的开发。
     ⑤需要注意的问题
     I属性覆盖没必要
      方法覆盖可以重写对应的功能,语法上也支持属性覆盖,但实际使用时修改属性的类型将导致结构混乱,所以继承是不使用属性覆盖(子类构造方法的参数列表和父类构造方法参数列表不必完全相同)。
     II子类构造方法的书写
       在子类构造方法内部必须调用父类的构造方法,若子类内部未书写调用父类的构造方法的代码时,子类的构造方法将自动调用父类默认的构造方法;而当父类中不存在默认构造方法,则必须在子类内部使用super关键字手动调用。
            III子类构造过程
               设A为父类,B为子类
               (1)类A的属性初始化
               (2)类A的构造方法
               (3)类B的属性
               (4)类B构造方法
           ⑥继承的设计
                 *自上而下的设计
                 先设计父类,然后增加子类,并在子类内部实现或添加对应方法。
                 *自下而上的设计
                 先不考虑类的关系,每个类分开设计,然后把重复的属性和方法抽象出来形成父类。
三.多态性
         多态性是面向对象技术中的最灵活的特性,主要是增强项目的扩展性,提高了代码的可维护性。
        ①对象类型的多态
          对象类型的多态是指声明对象的类型不是对象的真正类型,其由创建对象时调用的构造方法决定。另外,按照继承性的说明,子类的对象也是父类类型的对象,可以直接赋值。
           测试代码:
              /*测试对象类型的多态*/
            public calss TestobjectType {
               public static void main(String args[]) {
                  Superclass sc = new Subbclass();
                  boolean b = sc instanceof Subbclass1;
                  System.out.println(b);
                  System.out.println(b1);
                }
              }
            该测试程序的输出结果是:
              TRUE   
              TRUE
············································································待续

16 个回复

倒序浏览
总结的很详细啊,火帖留名!
强烈支持了!
回复 使用道具 举报
顶!!!!!!!
回复 使用道具 举报
总结的很好,支持
回复 使用道具 举报
路过   浏览、学习   
回复 使用道具 举报
dispensable 来自手机 中级黑马 2014-7-5 20:13:30
地板
都是为了分,这是命根,顶你一发
回复 使用道具 举报
学习了,楼主很认真额
回复 使用道具 举报
总结的不错。
回复 使用道具 举报
总结的很好
回复 使用道具 举报
不错,很有用的总结!!!:handshake
回复 使用道具 举报
感谢分享
回复 使用道具 举报
赞一个 。。。。
回复 使用道具 举报
最后一个测试多态 中  打印语句 System.out.println(b1);   b1 指的是啥呢  没看懂   同时 这个Subbclass1 类 也没声明   代码是不是没全复制呢  
我也是刚看到这一部分 , 说的不对的地方 请谅解
回复 使用道具 举报

你叫张佳宁吧,你好啊
回复 使用道具 举报
总结的好详细. . . . . .
回复 使用道具 举报
:handshake
回复 使用道具 举报
:)。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马