Java это ключевое слово используется для вызова других конструкторовJAVA

Программисты JAVA общаются здесь
Anonymous
Java это ключевое слово используется для вызова других конструкторов

Сообщение Anonymous »

В классе наш учитель показал нам это:
Третий способ вызова альтернативных конструкторов изнутри конструктора. Используйте это для вызова альтернативных конструкторов. Если у вас есть несколько конструкторов для одного класса, вы можете использовать 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
}

// ...
}
Однако у нас не было возможности поговорить о том, зачем это делать, до окончания урока. Я пытаюсь подготовиться к пятничной лекции, но не уверен, что вижу необходимость в реализации конструкторов таким образом. Я предполагаю, что конструктор Foo() делает что-то отличное от параметризованного конструктора, основываясь на комментариях, которые он дал выше в коде, но я не вижу в этом необходимости, практически. Есть ли у кого-нибудь реальные примеры необходимости действовать таким образом?
Я спрашиваю, потому что всякий раз, когда я реализую программу таким образом:

Код: Выделить всё

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);
это больше похоже на плохой стиль, чем на что-либо еще... это тоже причина?

Вернуться в «JAVA»