Java 这是什么?它可以有多个参数吗?
我遇到一段代码,其中java中的这个方法采用三个参数,两个是整数,第三个是布尔值。 这到底是什么意思?这种方法还有其他变体吗? Hera是实际代码Java 这是什么?它可以有多个参数吗?,java,this,Java,This,我遇到一段代码,其中java中的这个方法采用三个参数,两个是整数,第三个是布尔值。 这到底是什么意思?这种方法还有其他变体吗? Hera是实际代码 public SegmentConstructor(int seqNum_, int length_) { this(seqNum_, length_, false); } 谢谢。这意味着当前类中有另一个构造函数具有该签名 public SegmentConstructor(int seqNum_, int length_
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false);
}
谢谢。这意味着当前类中有另一个构造函数具有该签名
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false); // calls the constructor below.
}
public SegmentConstructor(int seqNum_, int length_, boolean required_) {
seqNum = seqNum_;
length = length_;
required = required_;
}
此方法只是从另一个构造函数中调用类的一个构造函数的一种方法,以帮助避免代码重复。它只能在构造函数的第一行调用,而不能从任何其他方法中调用。这只是调用另一个构造函数来运行。因此,寻找具有该签名的其他构造函数。这是一个构造函数调用。如果您的类使用不同数量的参数实现不同的构造函数,则可以如下方式链接构造函数:
public SegmentConstructor(int seqNum_, int length_) {
this(seqNum_, length_, false); // calls the constructor below.
}
public SegmentConstructor(int seqNum_, int length_, boolean required_) {
seqNum = seqNum_;
length = length_;
required = required_;
}
class A {
public A(boolean arg) {
...
}
public A() {
this(false); // invokes the constructor with the boolean argument
}
}
有时,创建一个使用不同参数的私有构造函数,并为公共和/或受保护的构造函数提供其他/更少的参数,并将对象构造委托给该私有构造函数是有意义的
重要的是要知道,在调用此…之前不能放置任何其他代码。。。。然而,在调用这个…,你可以在任何其他构造函数中做任何你能做的事情
编辑:既然。。。调用构造函数时,只能从属于同一类的其他构造函数中调用它。如前所述,这调用另一个构造函数,主要是作为一种方便的方法 简单的例子:
class A {
private int value;
public A(int val) {
value = val;
}
public A() {
this(0); //0 as default
}
}
通常,当具有最多参数的最特定构造函数不只是赋值,而是包含更多您不想重复/复制的逻辑时,您会使用对该构造函数的调用
因为它适合这里:super也可以有参数,也就是说,它使用子类的构造函数中的参数调用一个super类的构造函数。class MyClass
{
私有int var1;
私有int var2;
私有布尔标志
公共MyClassint var1,int var2_
{
这个var1,var2,false;
}
公共MyClassint var1,int var2,布尔标志_
{
var1=var1;
var2=var2;
flag=flag;
}
公共字符串toString
{
返回新的Booleanflag.toString;
}
公共静态无效字符串[]args
{
MyClass my=新MyClass 5,6;
System.out.printlnmy;
}
}
这不是一个方法,而是一个指向同一类重载构造函数的保留关键字。 传递的参数数量应指向类中定义的现有相应构造函数
super也有语义,但是构造函数是在其父层次结构中定义的。oh!谢谢你的快速回复。。。我现在明白了..所以这个int,int,bool调用了其他具有类似参数的构造函数…非常感谢..如果您将代码缩进四个空格,它将通过StackOverflow格式化为代码。+1:关于如何使用它以及super关键字的评论很好。