首页 > 代码库 > 《Java开发手册》学习进程之第6章对象和类

《Java开发手册》学习进程之第6章对象和类

传统的过程化程序设计通过设计一系列的过程——算法来求解问题。这些过程一旦被确定,下一步就要开始寻找存储数据的方式,即“程序 = 算法 + 数据结构”。而面向对象的程序设计(即OOP,Object Oriented Programming)调换了这个次序,将数据放在第一位,之后再考虑操纵数据的算法。

在OOP中,程序被看作是相互协作的对象集合,每个对象都是某个类的实例。所有类构成了一个通过继承关系相联系的层次结构。

由于面向过程的编程模式是先将一系列过程(即函数)设计好再通过参数输入求解的,所以对于软件维护人员来说,无论是函数还是数据结构的改动,都会使整个程序受到干扰,进而可能引发软件系统的崩溃。

面向过程更接近计算机世界的物理实现,而面向对象的思想则更符合人们的认识习惯。

类声明是用来创建对象的模板的抽象规格说明。

对象中的数据称为实例域,操纵数据的过程称为方法。

定义了类之后,就可以在类体中声明两种类的成员:成员变量和成员方法。

成员变量(又称实例变量)即类的属性。每个对象的属性都有自己的值。

通过new创建对象后将返回其引用值,并将其赋给一个引用,也就是让引用指向创建的对象。如果只是用new创建对象但不让某个引用指向它,则对象创建后就不能对其进行访问了。因为在Java中,对象只能通过指向对象的引用来访问。

注意第111页中有关返回值类型的有关问题。

局部变量:

局部变量也就只能在语句块中有效。

除了类体外,诸如方法体、循环体、if或else后的一对花括号等都是语句块

因为语句块可以嵌套,所以在“外语句块”里定义的局部变量如果发现在“内语句块”中也有同名的局部变量,则编译报错。

局部变量与成员变量不同,在声明之后如果不初始化,则系统不会自动为其分配初始值。若使用未初始化的局部变量,则编译报错。

public class Sample6_11{    public static void main(String[] args)    {        int i, x = 90, y = 50;        if (x > y)        {            i = 10;        }        int j = i;    }}

由上面的代码可知,在“外语句块”中,局部变量i可以在“内语句”中被使用,但在“内语句块”中所使用的“痕迹”会在该“内语句块”之外被抹掉。即即使在“内语句块”中被初始化,但出了“内语句块”后,编译器仍认为i没被初始化。

Java中,编译和运行所做的工作是不同的。

可变的参数个数:

定义一个方法sortAndPrint,它能对任意个整数排序及输出。

public static void sortAndPrint(int... entrys){    Arrays.sort(entrys);    int size = entrys.length;    System.out.println("捐弃结果为:");    for (int i = 0; i < size; i++)    {        System.out.print(entrys[i] + ", ");    }}

在该例子中,entrys仍可认为是一个数组,但在int…的声明下成为了可变长的数组参数。

注意:

一个方法中最多只能有一个可变长的参数;

如果方法的参数不止一个,可变长的参数必须为最后一个。

this 对象引用:

假如有一个Person类,它有一个成员方法showAga(),如果某个Person对象只访问一次,那么可以直接new Person().showAge()而不用先初始化一个Person类的对象引用再调用showAge()方法。因为new的返回值就是所创建的对象引用,这与使用明确声明的引用来进行调用是一样的。

在方法中的局部变量与成员变量同名时,系统将调用局部变量。在这种情况下,要使系统访问成员变量,需在变量面前使用预定义对象引用this。

《Java开发手册》学习进程之第6章对象和类