Хотя это возможно, возможно, на таких языках, как Scala или Ceylon (см. ниже), на Java вам необходимо явно назначить аргументы конструктора переменным экземпляра. Таким образом:
public class WineChiller {
double wineTemp;
double preferredTemp;
double chillTemp;
public WineChiller(double wineTemp, double preferredTemp, double chillTemp) {
this.wineTemp = wineTemp;
this.preferredTemp = preferredTemp;
this.chillTemp = chillTemp;
getChillingTime();
}
Аргументы конструктора видны только в области конструктора. Тот факт, что конструктор вызывает ваш getChillingTime()
, не имеет значения. Если вы хотите, чтобы они были видимыми в пределах экземпляра WineChiller
, вам придется создавать члены этого класса. Все методы этого класса могут затем получить доступ к членам экземпляра.
В любом случае, я настоятельно рекомендую вам внимательно прочитать учебник по Java. Вот один из них:
http://docs.oracle.com/javase/tutorial
I подумайте, что вы в основном боретесь с многословием Java, где вам нужно явно копировать аргументы конструктора в поля экземпляра, чтобы реализовать инкапсуляцию . Другие языки решили это более элегантно, где конструкторы могут быть неявно определены вместе с самим классом. Тем не менее, они все равно перейдут на что-то эквивалентное приведенному выше Java-коду. Например:
class Greeter(message: String) {
def SayHi() = println(message)
}
val greeter = new Greeter("Hello world!")
greeter.SayHi()
Пример отсюда: http://joelabrahamsson.com/learning-scala-part-four-classes-and-constructors /
class Point(Float x, Float y) { ... }
object origin extends Point(0.0, 0.0) {}
Пример отсюда: http://ceylon-lang.org/documentation/1.0/spec/html_single/