欢迎来到天天文库
浏览记录
ID:39527838
大小:797.72 KB
页数:22页
时间:2019-07-05
《零点起飞学Java之面向对象编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章面向对象编程除了基本的类和对象,Java语言的面向对象编程还包括抽象类、接口、内部类、包等高级特性。通过对这些高级特性的支持,Java语言全面实现了面向对象的编程。下面进一步深入介绍Java语言面向对象编程方面的知识。5.1类的三大特性第4章介绍了有关类定义的基本知识。面向对象中的类还具有封装、继承与多态的特性,这也是面向对象编程所具有的重要特点。Java语言对类的封装、继承、多态均有很好地体现,下面分别进行介绍。5.1.1隐藏细节——封装封装是指隐藏对象的属性及实现细节,对外仅提供接口可见。封装实现了信息
2、隐藏,有利于软件复用。这种技术带来的好处是达到了模块化的标准,从而提高了代码的复用程度。在某种程度上,封装也大大改善了软件开发的可维护性,降低了构建复杂软件系统的风险。在Java语言中,对象的属性和方法均可以进行访问控制。使用前面介绍的访问控制修饰符public、private、protected、default,可以实现不同程度的信息封装。在实际编程过程中,具体哪个对象的哪些属性、方法需要封装,封装到什么力度,需要视具体情况分析而定。而这种分析也已经上升为设计领域,需要读者对面向对象思想有更深的领悟及更多的相关
3、领域经验。5.1.2变相“抄袭”——继承继承是指一个类是从另一个类派生而来的,派生类自动具有了被继承类的所有特性。其中被继承的类称为“父类”,继承父类的类称为“子类”。继承可以使子类具有父类的各种属性和方法,而不需要再次编写相同的代码。继承也极大地促进了软件的复用,而且继承的形式可以更加复杂。Java语言中类继承的语法格式如图5.1所示。注意:子类无法继承父类中使用private修饰符修饰的类成员。前面章节也讲过类中限定为private的成员只能被这个类本身访问。比如示例5-2中,如果属性volume被定义为p
4、rivate,则语句tv.volume会报错。5.1.3灵活应对——多态多态是指对于一种服务功能,可以具有不同的实现方式,即多种形态。多态形象地描述了现实世界的复杂形态,使程序具有良好的扩展性。在继承的基础上,方法重载是实现多态的方式之一。说明:对于上述示例,父类更好的实现方式是采用抽象类或接口。有关抽象类或接口的概念在5.2节会详细介绍。5.2抽象类VS接口抽象类是Java语言中一种特殊的类,其中包含只进行了声明没有具体实现的抽象方法。而接口更像是一种特殊的抽象类,其中所有方法都只进行了声明没有具体实现。抽象
5、类和接口有着相似之处,不过也有许多区别。下面分别对它们进行详细地介绍。5.2.1抽象类抽象类是指包含了抽象方法的类。其中,抽象方法只声明方法名称,而不指明方法体。当需要表示对问题域进行分析、设计中得出的抽象概念时需要使用抽象类。抽象类比类的继承更高一层,是对类的抽象。抽象类拥有未实现的方法,不能被实例化,只能被继承扩展。通常Java语言中抽象类的语法格式如图5.2所示。注意:类体中至少包含一个抽象方法。抽象方法不含方法体,无需“{}”。5.2.1抽象类通过语法定义和示例可以看出,抽象类有如下一些特点:至少包含一
6、个抽象方法。不能被实例化。继承抽象类的子类必须实现其所有抽象方法才能实例化,否则该子类还是抽象类。在具体使用方面,抽象类能更准确地模拟对问题领域的理解。而且它可以提供实现的模式,使实现功能的代码更简单。抽象类一般用于关系密切的对象。其实在好多方面,抽象类和接口有着相似之处。下面介绍接口的概念,会与抽象类作一些比较。5.2.2接口接口是面向对象编程中又一重要概念。在实际问题中,有些互不相关的类具有某种相同的行为,这时可以采用接口来定义这种行为。接口只定义提供什么功能,而不定义功能的具体实现,这一点与抽象类似。在Ja
7、va语言中,不提供类的多继承,一个子类只能继承自一个父类。为了解决多继承的问题,在Java中可以采用接口来实现。一个类虽然不能同时继承多个类,却可以同时实现多个接口,从而可以解决现实中的多继承问题。有关接口的知识包括接口定义、接口实现,下面分别进行介绍。1.接口定义要使用接口,首先需要定义接口。接口定义的语法格式如图5.3所示。一个接口可有多个父接口,用逗号隔开。另外在接口的接口体中,所有成员变量默认为public、static、final类型。成员方法默认为public、abstract类型,只能包含常量及抽象
8、方法。与一般类、抽象类相比,接口在定义方面有如下一些特点:接口体只能包含常量及抽象方法。接口可以继承多个接口,而类不能多继承。接口不能包含构造方法。2.实现接口接口定义只规定了接口对外提供的功能定义,没有对功能具体实现。要真正使用接口定义的功能,需要定义类实现接口。非抽象类实现接口主要是实现接口中定义所有抽象方法。实现接口的语法格式如图5.4所示。2.实现接口一个类可以实
此文档下载收益归作者所有