从零开始学Java 第11章 面向对象编程技巧初探

第11章 面向对象编程技巧初探
    面向对象技术比较吸引人的地方就在于它的代码复用方面的能力。在面向对象的编程语言中,代码的复用通常是通过重复调用一个方法来实现的,这种方式就是Java中“组合”的前身。本章就介绍这种技术的语法以及其他面向对象编程相关的技术。
11.1.1  组合概述
    组合就是指将已经存在的类型作为一个新建类的成员变量类型,并且使得新类型具备现有类的功能。这种模式也叫做工厂模式,例如,在大型的汽车制造厂,就是分为不同的流水线,然后将所有零配件生产商所制造的零件组装起来。使用这种生产方式可以大大的提高产品的合格率,这样就比一个厂家生产全部的零配件效率要高。
11.1.2  组合语法
组合的类通常都是在程序的开发过程中经过多次应用被证明功能完全符合要求的类,然后将这些类作为一个新的类的内部成员类型并且通过这些类所提供的功能去实现最终的变成目的。这样可以降低软件的错误率。
11.2  修饰符
    Java的细节隐藏是通过访问控制来实现的,在定义一个成员变量或者是方法时,必须要指定成员变量或方法的访问权限。在Java中的修饰符主要由public、protected、private、static和final。下面就对这些修饰符进行介绍。
11.2.1  公共修饰符
     public的意思是公有的,例如公共汽车。它的意思就是任何人都可以使用。通常称被public修饰的成分具有“公有”权限。被public进行修饰的成分也可以被任何的程序访问。如果将成员变量或者是成员方法的访问权限设置为public类型。那么成员变量或者是成员方法所在的类以及其子类、同一个包中的类、不同包中的类都可以访问成员变量和成员方法。
11.2.2  保护修饰符
    protected访问修饰符可以将修饰的方法、成员变量被类自身以及其子类访问到。子类可以是在同一个包内,也可以是不在同一个包内。同一个包内的其他类也可以访问到protected成员。
注意:子类可以访问父类protected权限的成员并不是指子类内部建立一个父类的实例后,该示例就可以访问自身的protected成员;而是指protected成员继承到子类中后在子类中可见的。
11.2.3  私有修饰符
    private是私有修饰符,该修饰符是Java实现隐藏的关键技术,被声明为private的成员变量和方法只能被类自身所访问到,即使是同一个包中的类也不可以访问使用private来修饰的成员。
11.2.4  其他修饰符
    在Java中,除了前面所介绍的几种修饰符之外,还有默认的修饰符、static、final、transient、volatile、abstract、native等等,下面就介绍一下其他的集中修饰符。
默认修饰符:默认修饰符是在程序员没有指定访问控制修饰符的情况下,表示使用默认的修饰符。这时的成员变量和方法只能够在自己的类以及该类的同一个包下的类中进行访问。
11.2.4  其他修饰符
  Static:表示静态的。在前面介绍过static修饰符,被它修饰的变量称为静态变量,被修饰符的方法称为静态方法。静态变量和静态方法都属于类,它不属于任何的具体的实例。静态变量和静态方法的使用只需要使用类名,并使用“.”来进行调用。
  final:final是最终的。被它所修饰的成员变量在整个的程序执行过程中最多只可以进行一次赋值,通常使用它来定义常量。
Transient:它只能够修饰非静态的成员变量。
Volatile:同transient相同,只可以修饰成员变量。
abstract:被abstract所修饰的成员方法称为抽象方法,抽象方法中没有方法的实体。

11.3  封装
    封装是将一种数据和对数据的操作全部绑定在一个类中的方法,这样的方法就保证了程序的数据不会受到外部代码的影响。也可以把这个类想象成为一个容器,其中有自己的数据和对数据的操作,并可以组织外部代码去随意的去访问自己内部的数据。
11.3.1  封装概述
   在面向对象语言中,如果将数据和对数据的操作绑定在一起,就创建了一个对象。而对于这个对象中的数据和对数据的操作,就可以通过这个类的成员代码来进行操作访问。如果不会允许该对象之外的任何程序访问,可以将数据和对数据的操作设置为私有的。
11.3.2  实现封装
     封装就是指隐藏对象的属性以及实现细节,对外仅提供有可见的接口。封装实现了高度信息隐藏,在Java语言中,对象的属性和方法都可以进行访问控制。也就是使用前面所介绍的public、private、protected等,可以实现不同程度的信息封装。下面通过一个完整的示例来进行介绍。
11.4  小结
    在本章中主要简单的介绍了面向对象程序设计的一些注意点。主要内容有封装性以及如何合理的使用类,并对继承和组合两种机制进行了简单的比较。内容介绍的比较浅显,希望读者能慢慢理解。面向对象不仅仅是程序设计语言的修饰词,它更是一种思想,这种思想需要在实际的学习中掌握Java提供的一些类,通过它们的源代码学习面向对象设计也是一种很好的方法。

原文地址:https://www.cnblogs.com/yoogoo/p/2467269.html