17xie > Java语言实用教程 > 第5章 类与对象
背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-2607.html    注册17xie 一起来写书 实现您的出书梦想!

5  类与对象

内容提示:类是构造面向对象程序的基本单位,是抽取了同类对象的共同属性和方法形成的对象或实体的“模板”。而对象是现实世界中实体的描述,对象要创建才存在,有了对象才能对对象进行操作。本章主要介绍开发Java程序时必须掌握的类和对象的基础内容,包括类以及包含于类中的方法、对象、以及相关修饰符的说明。

5.1  Java的类

类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。类封装了一类对象的属性和服务(方法),是这一类对象的原型。在前面章节的例题中已经定义了一些简单的类,本节将详细介绍如何创建一个Java类。

一个Java类形式上包括两个部分:类声明部分和类体部分。

其基本格式为:

class 类名{

类体内容

}

class是关键字,用来定义类。语句“class 类名”是类的声明部分,大括号之间是类体。

5.1.1  类声明部分

格式为:

 [修饰符] class 类名 [extends 父类名] [implements 接口名列表]

类的修饰符有privatepublicabstractfinal。一个类可以同时有多个修饰符,当有多个修饰符时这些修饰符没有先后顺序之分,可以按照任意顺序排列。

l         private(私有):被修饰的类只能被同一包中的类访问,这是Java默认的方式。

l         public(公共):被修饰的类能够被所有的类访问。

l         abstract(抽象):被修饰的类不能被实例化,没有实现的方法。

l         final(最终):被修饰的类不能被继承,即不能有子类。

需要注意的是,abstractfinal不能同时作为一个类的修饰符。

类名是所创建的类的名称,类名可以是任意的Java标识符,根据Java命名的约定,类名每个有意义的单词的首字母要大写,其余字母小写。

extends(继承)关键字用来表明新创建的类继承哪个类,被继承的类称为此类的父类,也就是说extends后面只能跟一个父类的名称。

implements(实现)用来表明这个类实现了哪个接口,接口名称可以有多个。

5.1.2  类体部分

类体是类的主体部分,包含了所有实现类功能的程序代码。包括成员变量和成员方法,成员变量用来描述类的属性,方法描述类的行为(或功能)。Java类除了继承它的父类中的变量和方法外,一般仍会在类体中明确定义自己的变量和方法。程序中,成员变量应尽量放在方法定义之前。类体要用“{}”括起来。类体定义的格式如下:

类体{

成员变量声明及初始化

方法声明及方法体

}

下面是一个类名为“矩形”的类,成员变量部分定义了3float类型的变量:“长”、“宽”和“area”,方法部分定义了两个方法:“计算面积”和“修改宽度”。

class 矩形{

      float , , area;      //定义成员变量

      float 计算面积{      //方法定义

        area=*;

        return area;

  }

void 修改高(float h){      //方法定义

        =h;

      }

}

5.1.3  成员变量和局部变量

变量声明中定义的变量被称为类的成员变量,在方法体中定义的变量和方法的参数被称为局部变量。

声明数据成员变量必须给出变量名及其所属的类型,其声明的格式为:

[修饰符] 成员变量类型 成员变量名列表

成员变量的修饰符有:缺省访问修饰符、publicprotectedprivatefinalstatictransientvolatile

l         缺省访问修饰符(friendly):缺省访问修饰符的成员变量可以被同一包中的任何类访问。

l         public:修饰的成员变量可以被项目文件中的任何方法访问。

l         protected:修饰的成员变量可以被有继承关系的类自由访问,即子类可以访问。

l         private:修饰的成员变量只能在同一个类中使用。

l         static:修饰的成员变量又称为类变量(或静态变量),不加static修饰的成员变量叫做实例变量(对象变量)。实例变量依附于具体的对象实例,其值因具体对象实例的不同而不同,而类对象为该类的所有对象共享,其值不因类的对象不同而不同。

l         final:修饰的成员变量叫做最终成员变量。从一开始创建该变量时就为其设定了一个值,在以后的运行过程中,这个值将一直保持不变,所以又称为常量。

l         transient:指名变量是一个暂时性状态。

l         volatile:指明变量是一个共享变量,用来修饰由多个并发线程共享的变量,使得各个线程对该变量的访问能保持一致。

成员变量和局部变量的类型可以是Java中任意的数据类型,包括简单类型、类、接口和数组,在一个类中的成员变量名应该是唯一的。例如下面的例子:

class People{

int boy;

      float a[];

void b(){

        boolean young;

        workman littleBoy;

      }

}

class workman{

double x;

}

其中People类的成员变量a是浮点型数组变量。方法b中的younglittleBoy是局部变量,其中youngboolean型变量,littleBoyworkman类型变量,即是一个对象。

成员变量在整个类内都有效,而局部变量只在定义它的方法内有效。例如下面的例子:

class clock{

      int hour;

  int find(){

        int a=10;

        hour=a;      //合法,变量hour在整个clock类内都有效

        return hour;

}

void f(){

        int y;

        y=a;      //非法,变量a已经失效,而方法f内没有定义变量a

      }

}

虽然成员变量与它在类中的书写位置无关,但不提倡把成员变量的定义分散地写在方法之间或类体的其他部分。

如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效,例如:

class ren{

  int x=10,y;

  void f(){

    int x=2;

    y=x;      //y得到的值是2,不是10

  }

}

成员变量若被隐藏后仍然想在该方法内使用成员变量,就必须使用关键字this,在后面的章节中会有详细介绍。

5.1.4  方法

通过声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。方法的定义包括两部分,方法声明和方法体。

其基本格式为:

方法声明部分{

方法体的内容

return [表达式]

}

 

 


字数:4237    最后更新:1年以前 [10-11 14:14]屈辰晨 修改
本页编辑者:屈辰晨  
[前一页]:4.3 多维数组  [后一页]:第6章 Java类的高级特…
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号