Для чего в Java нужны конструкторы?
в Java нужны конструкторы за тем же зачем и в любом другом ООП-языке
если ты не знаешь что такое ООП - читай книжки
вместо двух строчек
x = new Net;
x->setRaw(Raw);
можно писать
x = new Net(Raw);
Строчек меньше, а функциональность та же.
ну еще внутренние переменные объект сам устанавливает в нужные значения благодаря конструкторам.
вместо двух строчек ... можно писатьИ нельзя просто написать "x = new Net;", а потом удивляться, почему это в другом месте всё упало из-за отсутствия Net::raw.
Есть идея, что объединение создания объекта и его инициализации позволяются справиться в проблемой объектов в промежуточном некорректном состоянии. Хотя на практике неоднократно замечал, что для пользователя класса это не всегда удобно. Мне кажется, что во внутреннем коде лучше активно использовать конструкторы, а для внешнего АПИ лучше использовать более "открытую" инициализацию (особенно если имеется большее разнообразие пользователей и сценариев использования предоставляемой через этот АПИ функциональности).
конструкторы - это всего лишь методы класса, вызывающиеся автоматически при создании объекта. это лишь помогает программисту писать меньше буковок.Только и всего? просто не совсем понятно, зачем после объявления класса в нем же вызывается конструктор. Можешь, если не тяжело, на словах объяснить? (если не заберет много времени, само собой).
вместо двух строчек
не совсем понятно, зачем после объявления класса в нем же вызывается конструкторНе совсем понятно, что ты имел в виду? В ком, где и как вызвался конструктор, и почему тебе хэто не понравилось?
Вообще, по твоим постам у меня появилось такое впечатление (ну да, я телепат что ты не совсем отличаешь классы от объектов
И чем они отличаются?
---
...Я работаю антинаучным аферистом...
Скажи, что такое файл - расскажу, чем отличаются
---
...Я работаю антинаучным аферистом...
Класс - мозгоёбы
Объект - КОНТРА
---
...А я милого узнаю по походке...
что ты не совсем отличаешь классы от объектовстранное изречение...
а вообще я в первом же ответе посоветовал автору почитать про ООП
а конструкторы еще нужны для ограничения доступа, чтобы например кому не положено не мог экземпляр класса создать
например такое часто в паттерне фабрика используется, фабрика может создать экземпляр, а другие не могут
в том же синглтоне например как без конструктора обойтись?
а конструкторы еще нужны для ограничения доступа, чтобы например кому не положено не мог экземпляр класса создатьЗдесь не тот случай
Классы и объекты отличаются только у тех, кто не знает ООП,
а потому выдаёт за ООП обыкновенную процедурщину.
Если ты будешь последовательно объективизировать понятия,
то ты получишь то, что получили товарищи-смолтолкеры:
класс --- тот же объект.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
класс является объектом, но это не значит, что класс = объект.
"класс есть объект" не совпадает с "класс = объект."
---
"Аллах не ведёт людей неверных."
ты мой пост не прочитал. слив засчитан.
С тебя объяснение, чем класс отличается от объекта.
---
"Аллах не ведёт людей неверных."
В контексте языка Java и вопроса про конструкторы, какое это имеет значение? Это я имею виду тему класса как объекта. Тем более не понятно как это связано с выдаванием ООП за "обыкновенную процедурщину".
Забей. Дай Контре слить.
придаёт этому какое-то значение, а раз он этому
ещё и учить пытается, пусть объясняет.
, кстати, тоже.
---
...Я работаю антинаучным аферистом...
С тебя объяснение, чем класс отличается от объекта.поведением, хотя бы таким - изменение набора методов у класса - вызывает изменение набора методов всех экземпляров данного класса, изменение набора методов у объекта - вызывает измнение набора методов только у этого одного экземпляра.
или другими словами - класс является обобщением(доп. метауровнем) над неким набором объектов, объект, в общем случае, таким метауровнем не является.
С тебя объяснение, чем класс отличается от объекта.вот видишь, можешь же читать чужие сообщения, и задавать правильные вопросы.
, кстати, тоже.не вижу где
Вы же оба говорите одно и то же
класс является объектом, но это не значит, что класс = объект.
"класс есть объект" не совпадает с "класс = объект."я не вижу отличия в этих двух фразах
а ничего друго в этом топике не сказал
так что либо он "не кстати и не тоже", либо "КОНТРА, кстати, тоже"
> методов всех экземпляров данного класса,
> изменение набора методов у объекта - вызывает измнение набора
> методов только у этого одного экземпляра.
Ты говоришь про модульную парадигму, которая замаскирована под ООП:
объект у тебя не является самостоятельной сущностью, а действует
исключительно через посторонний, имеющий самостоятельное значение
слой, занимающийся динамическим сопоставлением сигнатур процедур.
> или другими словами - класс является обобщением
> (доп. метауровнем) над неким набором объектов, объект,
> в общем случае, таким метауровнем не является.
Вот я и говорю, что ты говоришь не про объектно-ориентированное
программирование, а про обычное модульное: модуль является
обобщением над некоторым набором переменных, процедур и проч.
---
...Я работаю антинаучным аферистом...
в таких случаях говорит про суслика.
---
"Тот, кто знает, знает, а кто не знает, не знает."
объект у тебя не является самостоятельной сущностью, а действует
исключительно через посторонний, имеющий самостоятельное значение
слой, занимающийся динамическим сопоставлением сигнатур процедур.
из каких моих слов - это следует? где я говорил, что объект действует через вспомогательный слой?
> что объект действует через вспомогательный слой?
Там были все нужные слова, ты их удалил,
теперь пользуйся ссылками.
---
"Аллах не ведёт людей неверных."
>И чем они отличаются?
Класс - мозгоёбы
Объект - КОНТРА
---
...А я милого узнаю по походке...
- Это индивидуум, изъясняющийся так, что другие его понять не могут. Понял?
- Нет...
?
> Классы и объекты отличаются только у тех, кто не знает ООП,
> а потому выдаёт за ООП обыкновенную процедурщину.
> Если ты будешь последовательно объективизировать понятия,
> то ты получишь то, что получили товарищи-смолтолкеры:
> класс --- тот же объект.
Если мне не изменяет зрение, ты сказал, что классы и объекты не отличаются. Типа, одно и то же.
Ты был неправ и тебе даже внятно объяснили, где именно. Действительно, если как следует объективизироваться, то получается категория "Объекты", которая включает вообще всё, и её подкатегория "Классы". Все классы являются объектами, но не все объекты являются классами, следовательно, это разные вещи.
Теперь, вместо того, чтобы сказать "Да, я далбайоп и был неправ, простите меня пожалуйста", ты пытаешься сделать вид, что твои оппоненты — идиоты и не знают этих действительно довольно-таки элементарных вещей.
модуль является обобщением над некоторым набором переменных, процедур и прочэто вообще-то композиция, а не обобщение.
ты что действительно не понимаешь разницу между отношением "обобщение" и отношением "композиция"?
Всегда думал, что объект - просто представитель (экземпляр) класса...
А тут чё-то про композиции пишут... Видимо, правда, что Жава хавает моск
так оно и есть
> А тут чё-то про композиции пишут... Видимо, правда, что Жава хавает моск
класс и объект являются композицией свойств и методов
Все классы являются объектами...
Что это дает? как это выглядит синтаксически, в рантайме?
не то чтобы супер, просто объектно-ориентированный
> как это выглядит синтаксически, в рантайме?
там всё выглядит в виде посылок сообщений объектам
а где живут объекты? а где классы?
в виртуальной машине, естественно
Что это дает? как это выглядит синтаксически, в рантайме?так у тебя уже в C#/Java класс является объектом, правда, только на чтение
object obj = typeof(object);
в Smalltalk-е/JavaScript-е класс уже получше, там можно не только посмотреть какие методы/свойства есть, но их прямо в runtime-е и добавить.
больше всего класс похож на объект в каком-нибудь CLOS-е, где порождение новых экземпляров объектов происходит через клонирование.
порождение новых экземпляров объектов происходит через клонирование.Дык ведь это, объект инкапсулирует не только методы (обработчики мессаг но и, извиняюсь, данные.
При инстантиации (инстанциации? инстанцировании?) в стандартных процедурно-ООП языках происходит появление storage для обычных полей (которого нет в классе и, наоборот, не происходит для static (которые как раз в классе хранятся). Статики, допустим, ещё можно симулировать через синглтоны (то есть это оно так и есть на самом деле но вот появление в "классе" ненужных нестатических полей — это бред же.
инстанциирование
> но вот появление в "классе" ненужных нестатических полей — это бред же.
так это скорее прототип, чем класс.
> инстантиации (инстанциации? инстанцировании?)ага
инстанциирование
он чуть чуть не дотопал
инстанцианизация!
Всегда думал, что объект - просто представитель (экземпляр) класса...нго сам класс, в общем-то, тоже можно рассматривать как объект - у него есть методы, есть члены...
это лишь помогает программисту писать меньше буковок.А смена языка на нормальный гораздо лучше помогает
Ну да, но в жаве это какой-то недокласс - ни наследования, ни виртуальных функций...
Оставить комментарий
zrab
Сабж, собственно. И еще: приведите пример простого кода, в котором невозможно без конструктора или очень геморно без оного. А то смотришь на такую конструкциюpublic class Net {
private final int NUMBER = 1;
public Net( Raw raw) {
System.out.println("all right");
this.raw= raw;
}
...
}
Здесь raw - какой-то другой класс.
Честно, пытался разобраться, читал книги, но ничего так и не понял.