Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1997649
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:10:45

    在面向对象中"方法"等同于非面向对象语言中的“过程”。也就是说,方法是一个程序的组成部分, 用来提供实现某个动作的机制(方法),如前面示例中的 barking。 对给定某个实体的实例,用"."连接实例与 class 中定义的方法来实现对行为的调用:

    方法调用语法
    .()
    = .(...)


    譬如,让 dog fido 来 bark 一次的操作如下:


    fido.bark()
    从语法上说, 语言支持将数据传给方法和获取从方法返回的值,但上面示例中的调用既没传数据也没有返回值。

    是一门强调类型(strongly typed) 的语言, 它要求变量、变量的值、返回类型等都必须正确匹配, 部分原因在于数据类型是区分同名的多个方法的要素。 方法的返回类型和参数都是在定义的时候就给定的:

    方法定义语法
    void (...) {
    ...
    }
    (...) {
    ...
    }


    方法名,返回类型以及参数表合起来叫方法标记(method signature)。在现代的 OO 语言中, 一个 class 内可以用同一名字定义多个方法, 只要它们的标记不同。此谓方法的重载(overloading)。 Java 中还规定,返回类型不能作为区分方法标记的因素, 因此,如果两个方法具有相同的名称和参数, 只是返回类型不同,是不允许出现在同一 class 中的。

    在上例中,返回类型为 void 表明方法 bark() 无须计算出任何结果传回给调用它的程序块。同时,bark() 也被无参调用。按对象学的说法, 调用特定对象(即类的某个实例)的方法被称为消息传递(message passing)。在上例中,消息不含有附加数据(没有参数)。

    至此,如果我们为 Dog 创建了一个实例,那么当它被激活时就能够 bark 了,但是我们尚无办法描述某些数据,比方说,让它 bark 多少次, 它是什么品种等等。在考察那些能使 Dog 这个数据类型更加通用的语言结构之前,我们还应先考虑 Java 语言的另一个方面,那就是,运行一个程序到底需要什么?

 

【责编:landy】

--------------------next---------------------

阅读(172) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~