什么是面向对象?面向对象中对对象简单的表述就是,对象具有状态、行为和标识。所
以,万物皆对象。
在介绍面向对象之前,先要了解什么是面向过程。所谓程序,其实就是在完成一系列操作的过程,所以面向过程就是直接按照步骤去做一件事,然后以程序的方式体现,这就是面向过程的编程思想。
可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。
如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接收用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
2. 面向对象程序设计方式的五大基本特性
1)万物皆对象。意思就是将独享视为奇特的变量,它可以存储数据,理论上来说,你可以抽取待求取问题的任何概念化构件(狗、建筑物、服务等)。
2)程序是对象的集合,他们通过发送消息来告知彼此要做的。要想请求一个对象,就必须对该对象发送一条消息,更具体地说,可以吧消息想象为对某个特定对象的方法调用请求。
3)每个对象都有自己的由其他对象所构成的存储。换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象。因此,可以在程序中构建复杂的体系,同事将其复杂性隐藏在对象的简单性背后。
4)每个对象都拥有其类型。按照通用的说法,“每个对象都是某个类(class)的一个实例(instance)”,这里的类就是类型的同义词。每个类最重要的区别于其他类的特性就是“可以发送什么样的消息给它”。
5)某一特定类型的所有对象都可以接收同样的消息。比如,“圆形”类型的对象同事也是“几何形”类型的对象,所以一个“圆形”对象必定能够接收发送给几何对象的消息。
3. 用引用来操作对象
在java中,一切都被视为对象,因此可采用单一且固定的语法。尽管如此,但操作的标识符其实是对象的一个“引用”,这一情形类似于我们用遥控器(引用)去操作电视机(对象),只要我们拿着遥控器,那么在一定范围内我们就能操作电视机。比如之前提到的声明变量,
String s ;
那么这里创建的只是引用,并不是对象。此时的s并未和任何事物关联,也就是说你现在只有一个遥控器,没有电视机,那你这个遥控器也干不了什么。那么有一种安全的做法就是在声明变量的同时对引用进行初始化,
String s = "abcd";
4.存储到什么地方
程序运行时内存的分配位置一般有五个:
(1)寄存器,最快的存储区,位于处理器内部
(2)堆栈,位于通用RAM(随机访问存储器)中,通常用来保存引用比较多
(3)堆,一种通用的内存池,也位于RAM中,用于存放所有的Java对象
(4)常量存储,常量值通常直接存放在程序代码内部,有时也可以选择存放在ROM中
(5)非RAM存储,如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在,其中两个基本例子就是流对象和持久化对象。