В чем разница между сеттером и конструктором?

0 голосов
42 просмотров

В чем разница между сеттером и конструктором?


Информатика (53.1k баллов) | 42 просмотров
0

Я конечно задавала этот вопрос для прикола, но не ожидала получить столько тупых ответов

0

Setter - метод в ООП, позволяющий в любой момент времени безопасно установить значения одному свойству объекта и при необходимости, выполнить какие-то дополнительные действия. К тому же, сеттеры обычно вызываются из кода программы явно. Конструктор объекта вызывается автоматически при создании этого объекта и проводит начальную инициализацию всех нужных свойств. Конструктор отрабатывает однократно и не может быть вызван из кода программы. Конечно, бывают и исключения в отдельных языках.

0

Опечатка: К тому же, сеттеры обычно вызываются из кода программы НЕявно.

0

Имелось в виду, что мы в программе присваиваем свойству значение, а на самом деле вызывается сеттер для этого свойства.

0

Скопируешь, как освободится место)

0

Зачем? Баллы мне сто лет не нужны)

0

К тому же, не вижу смысла знаниями со школьниками тягаться))) Пусть дают свои версии ответов, баллы зарабатывают.

0

тоже верно, но спамеров будет в разы больше

0

Спамеры за каждый случай спама ставятся в бан на 12 часов

0

Кроме того, народ почитает комментарии наверняка и не станет больше про собак писать...

Дан 1 ответ
0 голосов
Правильный ответ

Метод set нужен для того что бы присвоить закрытым (private) переменным в классе какое-либо значение. Т.к поле private 
доступно только для методов этого класса. 
А конструктор в зависимости от условия присваивает им какое-либо дефолтное значение . Разница в том что конструктор запускается автоматически при создании объекта. 
Приведу пример (с++)

class Fraction
{
private:
 int N;int deN;
public:
Fraction();  // прототип конструктора
void setFraction(int, int); // прототип сет-метода
};
void Fraction::setFraction(int num, int denum) // сам сет-метод
 {
N = num;deN = denum;
}
Fraction::Fraction() // конструктор
{
int N = NULL;
int deN= NULL;
}

(1.8k баллов)
0

Все же С++ имеет ужасный для школьника синтаксис...

0

type Fraction=class private N,deN:integer; procedure setN(num:integer); // setter begin N:=num; end; constructor(num,denum:integer); // конструктор begin N:=num; deN:=denum end; public property num:integer write setN; end;

0

А комментарии съедают тут переводы строк, но в Паскале все же синтаксис красивее.