结构化编程VS面向对象编程
结构化编程
在程序设计的早期,程序用流程图和自顶向下的方法设计。采用这种设计方法,程序员会将一个大的问题分解成更小的任务,然后为每个更小的任务编写一个过程(或函数)。最后,程序员会编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程。这种类型的程序设计被称为结构化编程。
在结构化编程中,程序围绕着要解决的任务来设计。编写程序就是编写执行特定任务的过程,过程中需要用到的数据通过过程参数传递到过程中。过程可以查看以及改变传递进来的数据,并可以将值返回给调用它的过程。
面向对象编程
面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。
我们可以将结构化编程看作是为问题域中的动词编写一个过程,例如计算税率、发放薪水,而将面向对象编程看作是为问题域中的每个名词编写一个类。
注意:面向对象编程与结构化编程一样,都是通过方法之间的调用来传递数据,但是二者之间有相当大的区别。
编写一个Java类
Java中的类用关键字class声明。Java源代码文件中只能包含一公用(public)类,文件名必须与公用类的类名相同,文件扩展名为“.java”。
注意:在一个.java文件中我们可以声明多个类,但是只有一个类可以为声明为public。源代码文件的文件名必须与公用类的类名匹配。如果在源代码文件中没有公用类,文件名可以是任意的。
向类中添加成员变量
对象的属性成为相关类中的成员变量。类中的一个成员变量由如下部分组成:
- 访问修饰符。可以是public、private或protected;如果省略了访问修饰符,将使用默认访问修饰符。
- 数据类型。
- 成员变量名称。成员变量名称必须是一个有效的标识符,后面用分号结束。
向类中添加方法
一个对象的行为成为相关类中的方法。类中的一个方法典型地由如下部分组成:
- 访问修饰符。
- 返回值。
- 方法名称。必须是一个有效的标识符。
- 参数列表。在括号中出现。
- 方法的定义。在Java中,方法的定义(通常称为方法体)必须出现在方法声明后的大括号中。
实例化对象
在Java中,new关键字用于实例化一个对象。new运算符在内存中创建一个对象,并返回对新创建的对象的一个引用。只要我们的程序保留对该对象的一个引用,那么这个对象将一直保留在内存中。
各种数据类型的成员变量的初始值如下表:
成员变量的数据类型 | 初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
char | 空字符 |
boolean | false |
任何类型的引用 | null |
访问对象的属性和方法
当我们使用new关键字实例化一个对象时,系统为会该类中的每个成员变量和方法分配内存。如果要访问该对象的成员变量和方法,就需要使用点运算符来。
This引用
每个对象可以使用this关键字引用它本身。如果一个类的方法需要访问该类本身的成员变量或其它方法,就应该使用this引用。
我们可以将this应用作为参数给一个方法,通过这种方式,一个对象可以将它本身的引用传给其它对象。
使用包来组织类
在项目开发中,我们通常会编写数目众多的类。如果不对这些类进行分门别类的使用和存放,就像我们不使用文件夹去管理众多的文件一样,在使用时会很困难和不方便,也很容易出现类的命名冲突问题。Java通过引入包(package)的机制,以解决这两个问题。
在Java中,每个类属于一个包。包有两个基本的用途:
- 提供了一个组织类的机制;
- 为包中的类提供了一个命名空间。
创建和使用包
- 将类添加到包中;
- 创建了包后,类的名称变了(类的全名:包名.类名);
- 同类包相互调用的效果;
- 不同包的类相互调用(关键字:import);