Третий способ вызова альтернативных конструкторов изнутри конструктора. Используйте это для вызова альтернативных конструкторов. Если у вас есть несколько конструкторов для одного класса, вы можете использовать this(arg0, arg1, ...) для вызова другого конструктора по вашему выбору, при условии, что вы делаете это в первой строке вашего конструктора.
Код: Выделить всё
class Foo
{
public Foo()
{
this("Some default value for bar");
// Additional code here will be executed
// after the other constructor is done.
}
public Foo(String bar)
{
// Do something with bar
}
// ...
}
Я спрашиваю, потому что всякий раз, когда я реализую программу таким образом:
Код: Выделить всё
public class Pay
{
private double pay;
public Pay(double p)
{
pay = p;
}
public double getPay()
{
return pay;
}
public void calculatePayWithOvertime(Pay x)
{
Overtime ot = new Overtime(x);
pay = ot.getOvertimePay();
}
public static void main(String[] args)
{
Pay myPay = new Pay(100.0);
myPay.calculatePayWithOvertime(MyPay);// alternate implementation
System.out.println(myPay.getPay());
}
}
class Overtime
{
private double payWithOvertime;
public Overtime(Pay p)
{
payWithOvertime = p.getPay() * 1.5;
}
public double getOvertimePay()
{
return payWithOvertime;
}
}
Код: Выделить всё
myPay.calculatePayWithOvertime(myPay);