Java编程思想第1章:对象导论

来源:互联网 发布:网络小手分享论坛社区 编辑:程序博客网 时间:2024/05/16 14:38

本章介绍包括开发方法概述在内的OOP的基本概念。

类描述了具有相同特性(数据元素)和行为(功能)的对象集合。

接口确定了对某一特定对象所能发出的请求。但是,在程序中必须有满足这些请求的代码。这些代码与隐藏的数据一起构成了实现。

UML形式的图Unified Modelling Language,每个类用方框表示。


访问控制让客户端程序员无法触及他们不应该触及的部分。这些部分对内部操作是必须的,但并不是用户所需接口的一部分。

放空控制允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。

  • private
  • public
  • protected:与private相当,但是继承的类可以访问protected,但不能访问private
  • 包访问权限:默认权限当不指定的时候。类可以访问在同一个包中其他类的成员,包之外的是private。
有两种方法可以使基类与导出类产生差异:
  1. 直接在导出类中添加新方法。
  2. 改变现有基类的方法:overriding覆盖。
Java中动态绑定是默认行为,不需要额外添加的关键字来实现多态。
当circle被传入到预期结束Shape的方法,由于circle可以被dosomthing看做是shape,这种将导出类看做基类的过程称为向上转型。
终极基类:Object
单根继承保证所有对象都有某些功能,每个对象都可以执行某些基本操作。所有对象容易在堆上创建,参数传递也得到了优化。
同时使得垃圾回收器实现变得容易,不会因无法确定对象的类型而陷入僵局。
垃圾回收器可以自动发现对象何时不再被使用,并继而销毁它(自动释放对象所占用内存)。
Java的垃圾回收器被设计用来处理内存释放问题。

Java SE5之前,容器存储对象都只有object类型,使用容器是,置入对象引用后,会被向上转型为object因此取回时需要向下转型,但很危险,因为不知道具体类型。因此取出对象时,必须以某种方式记住这些对象是什么类型。
参数化类型机制:一个容器,知道自己所保存对象的类型,从而不用向下转型已经消除犯错误的可能。编译器可以自动定制作用于特定类型上的类。例如,编译器可以定制一个只接纳和取出shape对象的容器。
Java5以后,称之为范型,一对尖括号,中间包含类型信息。
以下一个存储Shape的ArrayList:
ArrayList<Shape> shapes=new ArrayList<Shape>();

Java完全采用了动态内存分配方式。每当想要创建新对象时,就要使用new来构建对象的动态实例。只能以一种方式创建对象(在堆上创建)。

0 0
原创粉丝点击