Java基础02 方法与数据成员

来源:互联网 发布:mysql select 两个表 编辑:程序博客网 时间:2024/05/16 19:21

从HelloWorld到面向对象,我们初步了解了对象(object)。对象中的数据成员表示对象的状态。对象可以执行方法,表示特定的动作

此外,我们还了解了类(class)。同一类的对象属于相同的类型(type)。我们可以定义类,并使用该定义来产生对象。

我们进一步深入到对象。了解Java中方法与数据成员的一些细节。

调用同一对象的数据成员

方法可以调用该对象的数据成员。比如下面我们给Human类增加一个getHeight()的方法。该方法返回height数据成员的值:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human();        System.out.println(aPerson.getHeight());    }}class Human{    /**     * accessor     */    int getHeight()    {        return this.height;    }    int height;}

我们新增了getHeight方法。这个方法有一个int类型的返回值。Java中使用return返回值

 

注意this,它用来指代对象自身。当我们创建一个aPerson实例时,this就代表了aPerson这个对象。this.height指aPerson的height。

this是隐性参数(implicit argument)。方法调用的时候,尽管方法的参数列表并没有this,Java都会“默默”的将this参数传递给方法。

(有一些特殊的方法不会隐性传递this,我们会在以后见到)

 

this并不是必需的,上述方法可以写成:

     /**     * accessor     */    int getHeight()    {        return height;    }

Java会自己去判断height是类中的数据成员。但使用this会更加清晰。

我们还看到了/** comments  */的添加注释的方法。

方法的参数列表

Java中的方法定义与C语言中的函数类似。Java的方法也可以接收参数列表(argument list),放在方法名后面的括号中。下面我们定义一个growHeight()的方法,该方法的功能是让人的height增高:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human();        System.out.println(aPerson.getHeight());        aPerson.growHeight(10);        System.out.println(aPerson.getHeight());    }}class Human{     /**     * accessor     */    int getHeight()    {        return this.height;    }    /**     * pass argument     */    void growHeight(int h)    {        this.height = this.height + h;    }    int height;}

在growHeight()中,h为传递的参数。在类定义中,说明了参数的类型(int)。在具体的方法内部,我们可以使用该参数。该参数只在该方法范围,即growHeight()内有效。

在调用的时候,我们将10传递给growHeight()。aPerson的高度增加了10。

调用同一对象的其他方法

在方法内部,可以调用同一对象的其他方法。在调用的时候,使用this.method()的形式。我们还记得,this指代的是该对象。所以this.method()指代了该对象自身的method()方法。

比如下面的repeatBreath()函数:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human();        aPerson.repeatBreath(10);    }}class Human{    void breath()    {        System.out.println("hu...hu...");    }    /**    * call breath()    */    void repeatBreath(int rep)    {        int i;        for(i = 0; i < rep; i++) {            this.breath();        }    }    int height;}

为了便于循环,在repeatBreath()方法中,我们声明了一个int类型的对象i。i的作用域限定在repeatBreath()方法范围内部。

(这与C语言函数中的自动变量类似)

数据成员初始化

在Java中,数据成员有多种初始化(initialize)的方式。比如上面的getHeight()的例子中,尽管我们从来没有提供height的值,但Java为我们挑选了一个默认初始值0。

基本类型的数据成员的默认初始值:

  • 数值型: 0
  • 布尔值: false
  • 其他类型: null

 

我们可以在声明数据成员同时,提供数据成员的初始值。这叫做显式初始化(explicit initialization)。显示初始化的数值要硬性的写在程序中:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human();        System.out.println(aPerson.getHeight());    }}class Human{    /**     * accessor     */    int getHeight()    {        return this.height;    }    int height = 175;}

这里,数据成员height的初始值为175,而不是默认的0了。

Java中还有其它初始化对象的方式,我将在以后介绍。

 

总结

return

this, this.field, this.method()

默认初始值,显式初始化



1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小车撞凹进去了怎么办 被代位追偿了怎么办 车被别人抵押了怎么办 朋友没驾照借车怎么办 车子被朋友撞了怎么办 电车被交警扣了怎么办 e照扣了12分怎么办 驾驶证被扣33分怎么办 a2驾驶员扣33分怎么办 驾驶证被扣48分怎么办 驾照扣了33分怎么办 车辆被扣36分怎么办 车被朋友借走了怎么办 在中国终身禁驾怎么办 c驾驶证忘年审了怎么办 驾驶证脱审1年多怎么办 驾驶证脱审四个月怎么办 驾照b2过期没审怎么办 a照驾照过期没审怎么办 驾照扣60多分怎么办 无证违章被扣分怎么办 变味的牛奶喝了怎么办 孩子喝了坏牛奶怎么办 孕妇喝了坏牛奶怎么办 驾照过期五年了怎么办 科目一没过之后怎么办? 重庆科目一没过怎么办 科三过了没签字怎么办 驾照过期几天撞死人怎么办 办理过期身份时出错了怎么办 新加坡半年临时驾照过期后怎么办 北京怎么办残摩行驶证 报考驾照三年到期了怎么办 车辆违章扣3分怎么办 驾照过期忘审了怎么办 外省港澳证办了居住证怎么办 电动车交警罚单丢了怎么办 在外地开车违章扣分怎么办 郑州车在外地扣分违章怎么办 电工证掉了应该怎么办 毕业回国美国驾照过期了怎么办