当前位置:  开发笔记 > 编程语言 > 正文

Java构造函数

如何解决《Java构造函数》经验,为你挑选了3个好方法。

我试图学习如何在Java中指定类构造函数.我开始明白它们指定了从该类生成的对象的实例变量的类型.它们还可用于设置实例变量的初始值.以下示例来自Sun网站上的Java教程:

public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}

在你的类源代码中你应该把构造函数放在哪里?

这些参数是变量的名称吗?:(int startCadence,int startSpeed,int startGear)还是齿轮,节奏和速度变量的名称?

(int startCadence,int startSpeed,int startGear)和gear,cadence和speed之间的区别是什么?

在极少数情况下,我的导师或盐湖社区学院的任何管理员都遇到过这个问题,让我明确表达我的意图.这个问题是以最大的学术诚信精神张贴的.我要求这个问题寻求一般性的建议,并帮助理解使用Java编程语言的正确方法.我绝不会使用他人的作品,而是把它当作我自己的作品.我使用这里提供的答案作为我理解的一般帮助.我做自己的所有工作,不复制回答我的问题的人提供的工作.



1> CodingWithSp..:

构造函数可以出现在类的代码中的任何位置.但是,按照惯例,大多数人将它们放在任何不是构造函数的其他函数之前.

至于变量名,所有6个实际上都是变量名,但范围是不同的.指定为构造函数的参数(startCadence,startSpeed,startGear)仅在构造函数中可用.其他3(齿轮,节奏,速度)可能是全班变量,适用于所有方法.但是,您的代码段中未显示该定义.完整的课程看起来像是:

class Bicycle
{
    // class-level variables
    private int gear;
    private int cadence;
    private int speed;

    // constructor
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }

    // another method (not a constructor)
    public void ShiftUp() {
        gear = gear + 1; // notice the 'gear' variable is available here too.
    }
}

希望有所帮助!



2> basszero..:

gear,cadence和speed是类的成员变量(在别处声明),startCadence,startSpeed和startGear是函数参数.

class Bicycle
{
    private int gear, cadence, speed;

    public Bicycle(int startCadence, int startSpeed, int startGear)
    {
        // set the value of member variables from passed parameters
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;

    }
}



3> OscarRyz..:

在你的类源代码中你应该把构造函数放在哪里?

我使用以下内容:

package statement ....
import statements....


public class MyClass { 
     // instance attributes
     private int i;

     // class attribute 
     private static int MAX;

     // static methods 
     public static int getClassCount() { 
     }

     // Constructor!! 
     public MyClass() {  // constructor.
     }

     // public methods 
     // protected methods
     // private methods 

     // public static void main
 }

但他们可以去任何地方.我觉得最好把事情按照可见度排序.例如,我更喜欢私有方法之前的公共方法(所以如果我正在寻找一个特定的公共方法,我知道它位于文件的顶部)出于同样的原因,我通常将构造函数放在顶部.

这些参数是变量的名称吗?:

没必要,您可以根据需要命名.我通常使用相同的名称.

......还是齿轮,节奏和速度变量的名称?...

它们是实例变量名称

(int startCadence,int startSpeed,int startGear)和gear,cadence和speed之间的区别是什么?

第一个是构造函数的参数名称,前者是它自己的对象的属性的名称.

拿这个样本:

 public class Person { 
     private String name; // a person has a name.

     public Person( String nameParameter ) {  
        this.name = nameParameter;
     }
     public String toString() { 
         return "My name is : " + this.name;
     }

     public static void main( String [] args )  { 

          // creates a new "instance" and assign "Patrick" as its name.
         Person one = new Person("Patrick");
         System.out.println( one ); // prints "My name is: Patrick"

         // each person have its own name. 
         Person two = new Person("Oscar");
         System.out.println( two ); // prints "My name is: Oscar"         


     } 
 }

如您所见,当您将值传递给构造函数时,您正在使用参数,当您看到构造函数代码时,您会看到参数名称(接收该参数),然后将其分配给实例属性.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有