类、对象、包

结构化编程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);

类、对象、包