Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这(1)条的目的是甚么;这(2)在以下程序中?_Java_Methods_This - Fatal编程技术网

Java 这(1)条的目的是甚么;这(2)在以下程序中?

Java 这(1)条的目的是甚么;这(2)在以下程序中?,java,methods,this,Java,Methods,This,在下面的程序中,我使用了this(1)&this(2)使用this(1)&this(2)的目的是什么?我还想知道这是一个关键字还是一个方法?我对java编程语言是新手 class Const { Const() { this(1); System.out.println(1); } Const(int x) { System.out.println(2); } } class const1 exte

在下面的程序中,我使用了this(1)&this(2)使用this(1)&this(2)的目的是什么?我还想知道这是一个关键字还是一个方法?我对java编程语言是新手

class Const
{
    Const()
    {
        this(1);
        System.out.println(1);

    }
    Const(int x)
    {
        System.out.println(2);
    }
}
class const1 extends Const
{
    int a;
    const1()
    {
        this(8);
        System.out.println(3);

    }
        const1(int x)
    {

        System.out.println(4);

    }
    public static void main(String s[])
    {
        new const1();
    }
}
这些是。它们调用同一类中的另一个构造函数。这允许多个构造函数共享相同的代码以实现共同的行为。没有它,你有时会被迫重复你自己

例如:

Const()
{
    this(1);
    ...
}
使用实际参数“1”调用此构造函数:

您可以以类似的方式使用关键字
super()
来调用超类构造函数

根据Java语言规范:

显式构造函数调用语句可分为两类:

备用构造函数调用以关键字this开始(可能以显式类型参数开头)。它们用于调用同一类的备用构造函数

超类构造函数调用以关键字super(可能以显式类型参数开头)或主表达式开始。它们用于调用直接超类的构造函数

这些是。它们调用同一类中的另一个构造函数。这允许多个构造函数共享相同的代码以实现共同的行为。没有它,你有时会被迫重复你自己

例如:

Const()
{
    this(1);
    ...
}
使用实际参数“1”调用此构造函数:

您可以以类似的方式使用关键字
super()
来调用超类构造函数

根据Java语言规范:

显式构造函数调用语句可分为两类:

备用构造函数调用以关键字this开始(可能以显式类型参数开头)。它们用于调用同一类的备用构造函数

超类构造函数调用以关键字super(可能以显式类型参数开头)或主表达式开始。它们用于调用直接超类的构造函数

this()
如果在构造函数中使用,则实际上用于调用同一类的另一个构造函数。如果您保持重载构造函数,它尤其有用

public class Rectangle {
  private int x, y;
  private int width, height;

  public Rectangle() {
     this(0, 0, 0, 0);
  }
  public Rectangle(int width, int height) {
      this(0, 0, width, height);
  }
  public Rectangle(int x, int y, int width, int height) {
      this.x = x;
      this.y = y;
      this.width = width;
      this.height = height;
  }
...
}
请记住,
this()
super()
必须是构造函数中的第一条语句(如果使用)。因此,它们不能在构造函数中一起使用


如果在方法体中使用,将引用调用该方法的当前实例

阅读Oracle教程了解和。

this()
如果在构造函数中使用,则实际上用于调用同一类的另一个构造函数。如果您保持重载构造函数,它尤其有用

public class Rectangle {
  private int x, y;
  private int width, height;

  public Rectangle() {
     this(0, 0, 0, 0);
  }
  public Rectangle(int width, int height) {
      this(0, 0, width, height);
  }
  public Rectangle(int x, int y, int width, int height) {
      this.x = x;
      this.y = y;
      this.width = width;
      this.height = height;
  }
...
}
请记住,
this()
super()
必须是构造函数中的第一条语句(如果使用)。因此,它们不能在构造函数中一起使用


如果在方法体中使用,将引用调用该方法的当前实例


阅读Oracle教程了解和。

这类似于为方法创建重载,以便它们模拟具有如下“可选”参数的方法:

DoStuff(int x, int y)
{
    //Stuff
}

DoStuff(int x)
{
    DoStuff(x, x);
}

除非您在构造函数中执行此操作(如果他们不传递值,请使用值1)。要回答问题,此调用对象的构造函数。

类似于为方法创建重载,以便它们模拟具有如下“可选”参数的方法:

DoStuff(int x, int y)
{
    //Stuff
}

DoStuff(int x)
{
    DoStuff(x, x);
}
除非您在构造函数中执行此操作(如果他们不传递值,请使用值1)。要回答这个问题,这个调用对象的构造函数。

你读过《帽子里的猫》吗?(对不起,忍不住!)你读过《帽子里的猫》吗?(对不起,无法抗拒!)