Чем отличается метод от конструктора

Обновлено: 16.05.2024

Разница существенная.
Онлайн вроде юкоса или wix - полный отстой. Привлекают бесплатностью, потом бабло сосут, т. к. бесплатно только начальное г.. но подсовывают в виде простого создания страницы.
Если же офлайн конструктор - то получишь кучу г.. нокода в нагрузку.
Так что используй CMS. Ту же joomla.
Шаблонов и расширений на все случаи жизни
Хостинг бесплатный ЛЮБОЙ тоже с ограничениями будет
Есть 115р/мес + домен 120р. /год

С помощью конструктора можно самому сделать простой сайт (визитка) чтото сложное лучше нанять профессионала и сделать под ваши конкретные требования.

//Поясните разницу и приемущества//----что б было понятно приведу пример_проще, есть вариант зайти в забегаловку и там поесть жареные куриные крылышки (риск прицепить заразу и итд_ неприятности), другой вариант--купить в маркете субпродукт и самому жарить (Бог знает чем кормили и куриные л они и итд), безусловно лучший вариант это самому выращивать кур и самому приготовить --т̲а̲к̲ ̲Б̲е̲з̲о̲п̲а̲с̲н̲е̲е̲ ̲и̲ ̲п̲о̲л̲е̲з̲н̲о̲ ̲д̲л̲я̲ ̲д̲у̲ш̲и̲ ̲и̲ ̲т̲е̲л̲о̲. потому начните с этого Уроки_Muse , а после сами решите как поступать

С помощью конструктора вы не выразите свою индивидуальность и получите много лишнего кода, пустых тегов. Но создание сайта с ним займёт у вас меньше времени, чем вручную, с помощью "программирования". Также с помощью второго метода, новички могут много чего напутать и сайт не откроется нормально.

самый легкий это движок вордпресс - бесплатен и куча готовых плагинов и предустановлен на многих хостингах

на конструкторах пишется только макет, особого функционала не сделаешь там, а если код писать то ты можешь делать все что захочешь, но это уже сложнее, зато продуктивнее

Гораздо медленнее будет работать без программирования, да и настроить всё ПОЛНОСТЬЮ как хочешь не сможешь.

Через конструктор - быстро делается, но много избыточной информации и владелец не всегда понимает, что именно происходит у него на сайте.
Программирование - медленно делается, но быстро грузится и автор четко знает, где и что у него лежит.
Сайт, сделанный с помощью конструктора, легче управляется и наполняется. Запрограммированный вручную изящнее и разумнее.

Разница существенная.
Онлайн вроде юкоса или wix - полный отстой. Привлекают бесплатностью, потом бабло сосут, т. к. бесплатно только начальное г.. но подсовывают в виде простого создания страницы.
Если же офлайн конструктор - то получишь кучу г.. нокода в нагрузку.
Так что используй CMS. Ту же joomla.
Шаблонов и расширений на все случаи жизни
Хостинг бесплатный ЛЮБОЙ тоже с ограничениями будет
Есть 115р/мес + домен 120р. /год

Бесплатный только Linux! Лучше пиши сам, не кому не придётся платить, а коль что случиться - будешь виновать ты)))

Лучше самому писать
1- этот сайт будет один в своем роде
2- вам самому бедт проще его изменять под свои нужды
3- все конструкторы каторые есть уже 100500 раз передрочены и заезжаны, я бы увидев такой сайт, сразу же "постремался" в нем лазить и не доверял ему бы изначально.

Обычно через конструктор сайт делается по шаблонам, хостинг чужой! Лучше изучать PHP и JavaScript и писать сайты самому в Блокноте или MS Office Publisher!

Мне понятно, что статический конструктор служит для присвоения значений статическим переменным, что он вызывается в первую очередь при создании объекта класса.

Но зачем он нужен, если я могу присвоить эти значения при объявлении переменных?

Скорее всего, присвоение переменных на месте объявления — это синтаксический сахар, а сами присвоения реально делаются именно в статическом конструкторе.

В месте объявления

Вот наивный пример:

Если смотреть с высоты птичьего полета, то инициализация по месту реализуется довольно просто: выражение, использованое для инициализации поля переносится в соответствующий конструктор - в экземплярный конструктор для экземплярны полей и в статический конструктор для статических полей.

Тут нужно сказать, почему у нас два конструктора. Конструктор экземпляра - это некоторая вспомогательная функция, призванная инициализировать экземпляр создаваемого объекта. Например, мы можем сказать, что любой валидный объект должен обладать некоторым поведением (инвариантом) и конструктор - это специальная функция, обязанная его обеспечить. Инвариантом может быть что угодно: начиная от того, что некоторое поле не нулевое, заканчивая более сложными правилами, например, что сумма полей дебет и кредит равна 0.

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

В отличие от конструктора объекта конструктор типа не вызывается пользователем. Вместо этого, он вызывается CLR в момент первого обращения к типу (опустим точные правила).

Существует тонкие различия в поведении во время исполнения, которое отличает использование инициализатора полей в месте объявления от инициализации этих же полей в конструкторе. Инициализаторы статических и экземплярных полей - это синтаксический сахар, но очень важно знать, какой именно!

В общих чертах конструктор экземпляра выглядит следующим образом:

У данного алгоритма есть два важных следствия. Во-первых, код инициализаторов экземплярных полей не просто помещается в конструктор, он помещается в самое его начало, еще до вызова конструктора базового класса, и во-вторых, он будет скопирован во все экезмплярные конструкторы.

Первое замечание очень важно (да, об этом могут спросить на собеседовании и это может пригодиться в реальных приложениях). Например, если кто-то вздумает вызвать виртуальный метод в конструкторе базового класса, то часть полей будет проинициализированы, а часть нет. Несложно догадаться, что поля, проинициализированные в месте объявления уже будут валидными, а другие поля будут содержать дефолтные значения.

Да, да, да, вызывать виртуальные методы в конструкторах базового класса - это плохо, но в реальность такое бывает и нужно понимать, что в этом случае будет в рантайме.

Со статическими конструкторами дела обстоят несколько сложнее и проще одновременно. С точки зрения наследования, способ инициализации статических полей никак не пересекается с вызовом статического конструктора базового класса. Никак. Там вообще процесс вызова статических конструкторов отличается от экземплярных. Например, при создании экземпляра наследника вначале вызывается статический конструктор наследника, а потом статический конструктор базового класса. А если дергается статический метод наследника, то статический конструктор базового класса вообще не вызовется автоматом (вызовется только если статический метод наследника как-то дернет базовый тип).

Но сложность возникает с тем, когда именно будет вызван статический конструктор.

Как уже написал @Qwertiy наличие или отсутствие статического конструктора в классе влияет на то, когда будет вызван этот самый конструктор. Наличие статического конструктора приводит к генерации странного специального флага, который затем скажет CLR, что можно более вольно относиться к времени вызова статического конструктора, и сделать это теперь можно будет не прямо перед первым обращением, а, например, перед вызовом метода, в котором это обращение происходит.

Потенциально, это может повлиять на эффективность приложения, поскольку теперь проверка будет делаться один раз, а не тысячи раз, при условии, что первое обращение находится в цикле от 0 до 1000.

Инциализатор полей (статических и нет) - это сахар, но он может быть с горчинкой, если не понимать, к чему приводит его чрезмерное использование.

Обычно я пользуюсь следующим эмпирическим правилом. Для экземплярных полей: нужно инициализировать поле аргументом конструктора - (без вариантов) использую конструктор; в противном случае - инициазатор полей. В случае статических полей: в подавляющем числе случаев использую инициализатор. Если кода много, то выделяю метод.

Если мне нужно использовать статический конструктор, чтобы задать порядок инициализации или изменить семантику инициализации типа, то я добавляю огромный комментарий, который говорит, почему к этому фрагменту кода нужно относитсья очень внимательно.

Если мне нужно использовать инициализатор для экземплярных полей, чтобы инициализация прошла до вызова конструктора базового класса, то я рефакторю код, чтобы этого было не нужно. Например, выделяю фабриный метод. Если же такоей поведение действительно нужно, то тут нужен двухстраничный комментарий, который объясняет почему это нужно и почему другие варианты не подходят.

Читаю Шилдта и уже 2ой день не могу понять конструкторы. Чем они отличаются от методов? Для чего их необходимо использовать?
Если есть возможность, приведите, пожалуйста, примеры.

DevMan

конструктор – метод, который вызывается автоматически при создании объекта.
Конструктор_(объектно-ориентированное_программирование)

Dywar

Конструктор - специальный метод, который призван создавать экземпляры класса или структуры. У него нет возвращаемого значения (неявный void).
Дефолтный конструктор - конструктор без аргументов.

Метод тоже может создавать новый экземпляр, но его нельзя вызвать через оператор new . ().

Условно:
Конструктор - метод для создания экземпляра.
Метод - это поведение созданных экземпляров.

var a = new Constructor();
a.Method();

Как уже говорилось ранее конструктор это метод, вызывающийся для создания экземпляра объекта, не содержит возвращаемого значения. Его можно использовать только с оператором new, он также может быть без аргументов (конструктор по умолчанию или дефолтный) или с ними, также конструктор нельзя передать ни в один метод, но вам стоит почитать про this и base, они часто применяются к конструкторам, если есть перегрузка или наследование. Но также он делится на два типа статический (не используется для создания, а лишь к нему подготавливает - т.е. устанавливает значения свойств, переменных, которые вы либо явно указали, либо их значения по умолчанию) - он не может иметь аргументов, а значит и перегрузок, а также методов доступа (указывается без него), вызывается в неявном виде перед любым другим конструктором объекта и нестатический - тот, что указывается в new с аргументами или без, а также с методами доступа. Конструктор без аргументов может быть использован в ограничениях, потому его отделяют в понятиях. Это бывает важным например для создания окон и любых форм.

Я только начал программировать на Java. Текст, который мы используем, отсутствует, когда речь идет о методах и конструкторах. Я не уверен, что такое метод или конструктор и что делает каждый из них уникальным. Может ли кто-нибудь помочь мне определить их и различить между ними?

важное различие между конструкторами и методами заключается в том, что конструкторы инициализируют объекты, которые создаются с помощью new оператор, в то время как методы выполняют операции над объектами, которые уже существуют.

конструкторы не могут вызываться напрямую; они вызываются неявно, когда new ключевое слово создает объект. Методы могут вызываться непосредственно на объекте, который уже был создан с помощью new .

определения конструкторов и методы выглядят аналогично в коде. Они могут принимать параметры, они могут иметь модификаторы (например, public ), и у них есть тела методов в скобках.

конструкторы должны быть названы с тем же именем, что и имя класса. Они ничего не могут вернуть, даже void (сам объект является неявное возвращение).

методы должны быть объявлены, чтобы вернуть что-то, хотя это может быть void .

1.конструктор используются для инициализации состояния объекта,где, как метод — это разоблачить поведение объекта.

2.конструктор не должен иметь тип возврата, где as метод должно иметь тип возвращаемого значения.

3.конструктор имя такое же, как имя класса, где as метод может или не может одно и то же имя класса.

4.конструктор вызывать неявно, где as метод вызвать явным образом.

5.конструктор компилятор предоставляет конструктор по умолчанию, где as метод компилятор не предоставляет.

другие преподаватели и ассистенты иногда говорят мне, что конструкторы-это специализированные методы. Я всегда утверждаю, что в конструкторах Java нет специализированных методов.

если бы конструкторы были методами вообще, я ожидал бы, что они будут иметь те же способности, что и методы. Что они, по крайней мере, будут похожи больше, чем различны.

чем конструкторы отличаются от методов? Позвольте мне сосчитать пути.

конструкторы должны вызываться с new оператор while методы не могут быть вызваны с помощью new оператора. Связанные: конструкторы не могут вызываться по имени, а методы должны вызываться по имени.

конструкторы могут не иметь возвращаемого типа, а методы должны иметь возвращаемый тип.

если метод имеет то же имя, что и класс, он должен иметь возвращаемый тип. В противном случае, это конструктор. Дело в том, что вы можете иметь два MyClass () подписи в одном определении класса, которые обрабатываются по-разному, должны убедить всех, что конструкторы и методы-это разные сущности:

конструкторы могут инициализировать константы экземпляра, а методы — нет.

общедоступные и защищенные конструкторы не наследуются, в то время как общедоступные и защищенные методы унаследованный.

конструкторы могут вызывать конструкторы суперкласса или того же класса, а методы не могут вызывать super() или this().

Итак, что похоже на методы и конструкторы?

у них обоих есть списки параметров.

у них обоих есть блоки кода, которые будут выполняться, когда этот блок либо вызывается напрямую (методы), либо вызывается через new (проектировщики.)

что касается конструкторов и методов, имеющих одинаковые модификаторы видимости. поля и методы имеют больше общих модификаторов видимости.

конструкторы может быть: частная, защищенный, общественные.

методы могут быть: частная, защищенный, общественные, аннотация, static, финал, синхронизироваться, уроженца, strictfp.

поля данных могут быть: частная, защищенный, общественные, static, финал, транзиторная, летучие.

В Заключение

в Java, форма и функция конструкторы существенно отличается от методов. Таким образом, называя их специализированными методами, на самом деле новым программистам сложнее узнать различия. Они намного больше отличаются от похожих, и изучение их как разных сущностей имеет решающее значение в Java.

Я признаю, что Java отличается от других языков в этом отношении, а именно C++, где концепция специализированных методов берет свое начало и поддерживается языковыми правилами. Но, в Java, конструкторы не методы вообще, гораздо менее специализированные методы.

даже javadoc распознает различия между конструкторами и методами, перевешивающими сходства; и предоставляет отдельный раздел для конструкторов.

конструктор-это особый вид метода, который позволяет создавать новый экземпляр класса. Это касается логики инициализации.

в Java классы, которые вы пишете, являются объектами. Конструкторы создают эти объекты. Например, если у меня есть Apple.class вот так:

надеюсь, я объяснил все в комментариях кода, но вот резюме: Конструкторы ‘construct’ объект типа класса. Конструктор должен иметь то же имя, что и класс. Они в основном используются для инициализации экземпляра varibales Методы-это функциональность объектов.

"метод" — это" подпрограмма "- это" процедура "- это" функция "- это" подпрограмма " — это . Та же концепция идет под разными именами, но в основном это именованный сегмент кода, который вы можете "вызвать" из другого кода. Как правило, код аккуратно упакован каким-то образом, с каким-то "заголовком", который дает его имя и параметры, а "тело" задается BEGIN & END или < & >или что-то в этом роде.

"consrtructor" специальная форма метода которого цель состоит в том, чтобы инициализировать экземпляр класса или структуры.

и можно сказать конструктор от других методов, потому что конструктор имеет имя класса и не объявил .

(в Java, конечно, вы создаете новый экземпляр класса new оператор — new ( ) .)

  1. конструктор должен иметь то же имя, что и класс, но метод может быть выполнен любым именем.
  2. конструктор не наследуется автоматически дочерними классами, а дочерний метод наследуется от родительского класса, если они не защищены ключевым словом private.
  3. конструктор r вызывается явно при методы implicitaly.
  4. конструктор не имеет возвращаемого типа, а метод имеет.

конструктор-это специальная функция, используемая для инициализации элемента данных, где методы являются функциями для выполнения конкретной задачи.

имя конструктора-это то же имя, что и имя класса, где имя метода может быть или не быть именем класса.

конструктор не разрешает возвращаемый тип, где методы разрешают возвращаемый тип.

конструктор как правило, является метод.

когда мы создаем объект использования оператора класса new, мы вызываем специальный метод, называемый конструктором.

конструктор, используемый для инициализации переменной экземпляра.

локальная переменная A в конструкторе: Contructor Print me

Так,только показать здесь оператор метода конструктора Diff (), потому что мы создаем объект класса Diff. В этом случае конструктор всегда сначала создает экземпляр класса здесь class Diff ().

все начинается здесь, когда мы вызываем объект ob в основном конструкторе метода, берет этот класс и создает копию, и он загружается в "загрузчик классов виртуальной машины Java" .

этот загрузчик классов берет эту копию и загружает в память, так что теперь мы можем использовать ее путем ссылок.

конструктор сделал свою работу, затем метод пришел и сделал свою реальную реализацию.

Чем конструктор отличается от метода?

DevMan

Конструктор — специальный метод, который призван создавать экземпляры класса или структуры. У него нет возвращаемого значения (неявный void).
Дефолтный конструктор — конструктор без аргументов.

Метод тоже может создавать новый экземпляр, но его нельзя вызвать через оператор new . ().

Условно:
Конструктор — метод для создания экземпляра.
Метод — это поведение созданных экземпляров.

Чем отличается конструктор от метода java

[an error occurred while processing this directive]

Понятие конструктора

[an error occurred while processing this directive](none)

Чем отличается конструктор от метода.

  • Назначение и функции
  • Отличия описания
  • Использование ключевого слова "this"
  • Использование ключевого слова "super"
  • Код генерируемый компилятором
  • Наследование
  • Подводя итоги
  • Об авторе
  • Ресурсы

Говорить что конструктор — это метод, все равно что говорить что австралийский утконос — просто млекопитающее. Чтобы понять кто такой утконос, необходимо знать чем он отличается от других млекопитающих. Чтобы понять сущность конструктора, аналогично, необходимо понять чем он отличается от простого метода. Любой, изучающий Java, в особенности для сертификации, должен знать эти отличия. В конце статьи я свел ключевые отличия конструкторов и методов в результирующую таблицу .

Назначение и функции

Конструкторы имеют только одно назначение — создать экземпляр класса. Или, как еще говорят, создать объект, как здесь:

Назначение методов гораздо более общее. Основная функция метода — выполнить Java код.

Отличия описания

Конструкторы и методы имеют три отличия при описании: модификаторы доступа, возвращаемые типы и правила именования. Как и методы, конструкторы могут иметь любые модификаторы доступа: public , protected , private , или модификатор может отсутствовать (часто имеется ввиду package или friendly ). Но в отличии от методов, конструкторы могут иметь модификаторы только доступа. Поэтому, конструктор не может быть abstract , final , native , static , or synchronized .

Возвращаемые типы тоже отличаются. Методы могут возвращать любой правильный тип, или ничего не возвращать, в данном случае возвращаемый тип описывается как void . Конструкторы же не имеют возвращаемого типа, они не могут возвращать даже тип void .

И в заключение, методы и конструкторы имеют различные имена. Конструкторы имеют одинаковые имена с именем класса в котором описаны, а методы, по договоренности, имеют имена отличные от имени класса. Если Java программа написана по правилам языка, имена методов начинаются с маленькой буквы, конструкторов — с большой. И еще, имя конструктора является существительным, так как имена классов обычно являются существительными, имена же методов обычно являются глаголами.

Использование ключевого слова "this"

Конструкторы и методы используют ключевое слово "this" совершенно по-разному. Метод использует this чтобы получить ссылку на экземпляр класса выполняющего этот метод. Статические методы не используют ключевое слово "this" ,т.к. они не принадлежат экземпляру класса, поэтому this некуда ссылаться. Статические методы принадлежат классу как целому, но никак не экземпляру класса. Конструкторы используют "this" чтобы сослаться на другой конструктор в этом же классе, но с другим списком параметров. Ознакомтесь с примером:

В данном примере имеется два конструктора. Первый получает строку-аргумент в качестве имени экземпляра класса. Второй не получает никаких аргументов, он просто вызывает первый конструктор используя имя "John/Mary Doe" по-умолчанию.

Если констурктор использует ключевое слово "this" , то оно должно быть в первой строке, игнорирование этого правила приведет к ошибке компилятора.

Использование ключевого слова "super"

И методы и конструкторы используют super для ссылки на супер-класс (класс предок), но разными способами. Методы используют super для выполнения какого-либо переопредленного метода супер-класса, как показано в следующем примере:

Эта программа вызывает super.getBirthInfo() переопредленный метод супер-каласса Mammal.

Конструкторы используют super чтобы вызвать конструктор супер-класса. Если конструктор использует super, то этот вызов должен быть в первой строке, иначе компилятор выдаст ошибку. Ниже приведен пример:

В этом простом примере конструктор Child() содержит вызов super , который создает экземпляр класса SuperClassDemo , в дополнение к классу Child.

Код генерируемый компилятором

Начинающий Java программист может быть озадачен когда компилятор автоматически дополнит исходный код конструкторами. В тех случаях, когда вы пишете код класса не содержащий конструкторов, компилятор автоматически дополнит его конструктором без аргументов. Т.е. если вы напишете:

это эквивалентно написанию:

Компилятор автоматически дополняет код не содержащий вызовов super , добавляя вызов super с несколькими параметрами или вообще без параметров в первую строку конструктора. Таким образом, если вы напишете

это будет идентично написанию:

Наблюдательный новичок может быть удивлен тому, как вышеописанная программа может вызывать конструктор предка, когда TestConstructor не наследует ни одного класса. Ответом является то, что Java наследует класс Object в том случае, когда явно не указан класс предок. Компилятор автоматически добавляет конструктор без аргументов, если явно не описан конструктор, и автоматически дополняет вызовом super без аргументов, в случае отсутствия явного вызова super . Таким образом, следующие два примера являются функционально эквивалентными:

Наследование

Что не правильно в следующем сценарии? Юрист читает завещание некоего Class А . Члены семьи Class А. собрались вокруг большого конференц-стола, кто-то тихо рыдает. Юрист читает, — "Я, Class А. , в чистом уме и здравии, оставляю все свои конструкторы своим детям!"

Проблема в том, что эти конструкторы не могут быть наследованы. К счастью для детей Class А. , автоматически наследуют все методы родителя, таким образом дети Class А. не останутся совсем обездоленными.

Помните что методы в Java наследуются, а конструкторы — нет! Рассмотрите следующий класс:

Класс SubClass автоматически наследует метод sayHi определенный в родительском классе. В тоже время, конструктор Example() родительского класса не наследуется его потомком SubClass .

Подводя итоги

Так же как утконос отличается от обычного млекопитающего, так же конструкторы отличаются от методов; особенно по их назначению, описанию, и способам использования методов this и super . И в дополнение к этому, конструкторы отличаются отношением к наследованию и кодом, генерируемым компилятором. В следующей ниже таблице все эти детали собраны воедино для простоты восприятия. Также вы можете найти дополнительные ресурсы посвященные конструкторам и методам в разделе ресурсов.

Свойство Конструкторы Методы
Назначение Создает экземпляр класса Группирует операторы Java
Модификаторы Не может быть abstract , final , native , static , или synchronized Может быть abstract , final , native , static , или synchronized
Возвращаемый тип Нет возвращаемого типа, не может быть даже void void или любой корректный тип
Имя Такое же как и имя класса (по договоренности, первая буква — заглавная) — обычно существительное Любое имя, за исключением имени класса. Имена методов начинаются со строчной буквы, по договоренности, и обычно являются глагол
this Ссылается на другой конструктор в этом же классе. Если используется, то обращение должно к нему быть первой строкой конструктора Ссылается на экземпляр класса-владельца. Не может использоваться статическими методами
super Вызывает конструктор родительского класса. Если используется, должно обращение к нему быть первой строкой конструктора Вызывает какой-либо переопределенный метод в родительском классе
Наследование Конструкторы не наследуются Методы наследуются
Автоматическое добавление кода конструктора компилятором Если в классе не описан конструктор, компилятор автоматически добавляет в код конструктор без параметров Отсутствует
Автоматическое добавление компилятором вызова конструктора класса-предка Если конструктор не делает вызов конструктора super класса-предка (с аргументами или без аргументов), компилятор автоматически добавляет код вызова конструктора класса-предка без аргументов Отсутствует

Об авторе

Robert Nielsen is a Sun Certified Java 2 Programmer. He holds a master’s degree in education, specializing in computer- assisted instruction, and has taught in the computer field for several years. He has also published computer-related articles in a variety of magazines.

Ресурсы

[an error occurred while processing this directive]
[an error occurred while processing this directive] Перевод на русский © Александр Серебряков, 2000

Часто говорят: «Конструктор — это метод», точно так же, как ученики Xidian — люди. Если вы хотите понять учеников Xidian, вы должны понимать разницу между учениками Xidian и другими. Также поймите разницу между конструктором и методом. Для людей, которые изучают Java, очень важно понимать конструктор.
Разница в функциях и эффектах
Конструктор должен создать экземпляр класса, Этот процесс также можно использовать при создании объекта: Platypus p1 = new Platypus ();
Вместо этогоРоль метода заключается в выполнении кода Java
Модификатор , возвращаемое значение и имя отличаются
Между конструкторами и методами есть три удобных различия: модификаторы, возвращаемые значения и именование. Как и методы, конструкторы могут иметь любой доступ: открытый, защищенный, приватный или неизмененный (обычно вызывается package и friendly). В отличие от методов, конструкторы не могут иметь следующие недоступные декорации: abstract, final , родной, статический или синхронизированный.
Тип возвращаемого значения также очень важен. Метод может возвращать любой тип значения или нет возвращаемого значения (void), конструктор не имеет возвращаемого значения, и void не требуется.
Наконец, поговорим о двухназвание, Конструктор использует то же имя, что и класс, но метод отличается. По соглашению методы обычно начинаются со строчных букв, а конструкторы обычно начинаются с заглавных букв. Конструктор обычно является существительным, потому что оно совпадает с именем класса, а метод обычно ближе к глаголу, потому что он описывает операцию.
Использование "этого"
Существует большое различие между ключевым словом, используемым в конструкторах, и методами. Ссылка на метод this указывает на экземпляр класса, который выполняет метод. Статические методы не могут использовать ключевое слово this, потому что статические методы не принадлежат экземплярам класса, поэтому на это нечего указывать. Этот конструктор указывает на другой конструктор с другими списками параметров в том же классе,
Не так много, чтобы сказать о коде:

В приведенном выше коде есть два конструктора с различными списками параметров. Первый конструктор присваивает значение имени члена класса, а второй конструктор вызывает первый конструктор, чтобы присвоить имени переменной члена начальное значение «John / Mary Doe».

В конструкторе, если вы хотите использовать ключевое слово this, оно должно быть помещено в первую строку, в противном случае это вызовет ошибку компиляции.

Использование "супер"
И конструкторы, и методы используют ключевое слово super для указания на суперкласс, но используемые методы отличаются. Методы используют это ключевое слово для выполнения методов в перегруженном суперклассе. Посмотрите на следующий пример:

В приведенном выше примере используйте super.getBirthInfo () для вызова перегруженного метода в суперклассе Mammal.

Конструктор использует super для вызова конструктора в суперклассе. И эта строка кода должна быть помещена в первую строку, иначе компиляция не удастся. Посмотрите на следующий пример:

В приведенном выше примере, который не имеет никакого практического значения, конструктор Child () содержит super, его функция заключается в создании экземпляра конструктора SuperClassDemo в суперклассе и его добавлении в класс Child.
Компилятор автоматически добавляет код
Компилятор автоматически добавляет код в конструктор, поэтому начинающие Java-программисты могут быть сбиты с толку. Когда мы пишем класс без конструктора, при компиляции компилятор автоматически добавляет конструктор без параметров, например: public class Example <>
будет скомпилирован следующим образом:

В первой строке конструктора, если super не используется, компилятор автоматически добавит его, например:

Компилятор добавит код следующим образом:

Подумайте об этом внимательно, вы будете знать следующий код

После того, как компилятор добавит код вроде:

унаследуют

Конструкторы не могут быть унаследованы. Подкласс может наследовать любой метод суперкласса. Посмотрите на следующий код:

Класс SubClass автоматически наследует метод sayHi в родительском классе, но конструктор Example () в родительском классе не может быть унаследован.

| Тема |Конструктор |метод
| Функция |Создать экземпляр класса Оператор JAVA
| Украшение |Невозможно использовать bstract, final, native, static или synchronized. Может
| Нет возвращаемого значения, нет пустоты |
имеет возвращаемое значение или void
naming | иИмя класса такое же, обычно существительное, начинающееся с заглавной буквы| Обычно представляет значение глагола, начиная с нижнего регистра |
| это | означаетДругому конструктору из того же класса, в первой строке | Укажите на другой конструктор в том же классе, в первой строке
| super |Вызвать конструктор родительского класса в первой строке | Вызвать перегруженный метод в родительском классе
| Наследование | Конструкторы могут наследоваться |
Метод невозможен
| Компилятор автоматически добавляет конструктор по умолчанию |Автоматически присоединиться, если нет | не поддерживается

| Компилятор автоматически добавляет конструктор по умолчанию, вызываемый в суперкласс |Автоматически присоединиться, если нет Не поддерживается

Методы против конструкторов в Java

Я только начал программировать на Java. Текст, который мы используем, отсутствует при обсуждении методов и конструкторов. Я не уверен, что именно метод или конструктор точно и что делает каждый из них уникальным. Может кто-нибудь помочь мне определить их и провести различие между ними?

Важное различие между конструкторами и методами состоит в том, что конструкторы инициализируют объекты, которые создаются с помощью оператора new , в то время как методы выполняют операции над объектами, которые уже существуют.

Конструкторы не могут быть вызваны напрямую; они вызываются неявно, когда ключевое слово new создает объект. Методы могут быть вызваны непосредственно для объекта, который уже был создан с помощью new .

Определения конструкторов и методов похожи в коде. Они могут принимать параметры, они могут иметь модификаторы (например, public ), и они имеют тела методов в фигурных скобках.

Конструкторы должны быть названы с тем же именем, что и имя класса. Они не могут ничего вернуть, даже void (сам объект является неявным возвращением).

Должны быть объявлены методы для возврата чего-либо, хотя это может быть void .

1. Конструктор используются для инициализации состояния объекта, где метод представляет поведение объекта.

2. Конструктор не должен иметь тип возвращаемого значения, в то время как метод должен иметь тип возвращаемого значения.

3. Конструктор name совпадает с именем класса, где как метод может совпадать или не совпадать с именем класса.

4. Конструктор вызывать неявно, где как метод вызывать явно.

5. Constructor compiler предоставляет конструктор по умолчанию, где как method compiler не предоставляет.

Другие инструкторы и ассистенты иногда говорят мне, что конструкторы — это специализированные методы. Я всегда утверждаю, что в Java конструкторы НЕ являются специализированными методами .

Если бы конструкторы были методами вообще, я бы ожидал, что они будут иметь те же способности, что и методы. Что они будут по крайней мере похожи во многих отношениях, чем они разные.

Чем конструкторы отличаются от методов? Позвольте мне сосчитать пути .

Конструкторы должны вызываться с помощью оператора new , в то время как методы не могут вызываться с помощью оператора new . Связано: Конструкторы не могут вызываться по имени, а методы должны вызываться по имени.

Конструкторы могут не иметь возвращаемого типа, в то время как методы должны иметь возвращаемый тип.

Если метод имеет то же имя, что и класс, он должен иметь тип возвращаемого значения. В противном случае это конструктор. Тот факт, что вы можете иметь две сигнатуры MyClass () в одном и том же определении класса, которые обрабатываются по-разному, должен убедить всех, что конструкторы и методы — это разные сущности:

Конструкторы могут инициализировать константы экземпляра, а методы — нет.

Публичные и защищенные конструкторы не наследуются, а открытые и защищенные методы наследуются.

Конструкторы могут вызывать конструкторы суперкласса или того же класса, в то время как методы не могут вызывать ни super (), ни this ().

Итак, что же похоже на методы и конструкторы?

У них обоих есть списки параметров.

Они оба имеют блоки кода, которые будут выполняться, когда этот блок либо вызывается напрямую (методы), либо вызывается через new (конструкторы).

Что касается конструкторов и методов, имеющих одинаковые модификаторы видимости . поля и методы имеют больше общих модификаторов видимости.

Конструкторами могут быть: private, protected, public.

Методы могут быть: private, protected, public, abstract, static, final, synchronized, native, strictfp.

Поля данных могут быть: private, protected, public, static, final, transient, volatile.

В заключение

В Java форма и функции конструкторов значительно отличаются от методов. Таким образом, называя их специализированными методами, начинающим программистам становится труднее усвоить различия. Они значительно отличаются друг от друга, и изучение их как различных сущностей является критически важным для Java.

Я признаю, что Java отличается от других языков в этом отношении, а именно C++, где концепция специализированных методов берет свое начало и поддерживается правилами языка. Но в Java конструкторы вовсе не методы, а тем более специализированные методы.

Даже Javadoc признает различия между конструкторами и методами перевешивает сходства; и предоставляет отдельный раздел для конструкторов.

В Java написанные вами классы являются объектами. Конструкторы строят эти объекты. Например, если у меня есть Apple.class , например, так:

Надеюсь, я все объяснил в комментариях к коду, но вот краткое изложение: Конструкторы «конструируют» объект типа класса. Конструктор должен иметь то же имя, что и класс. В основном они используются для инициализации переменных экземпляра Методы — это функциональность объектов.

Конструктор — это особый вид метода, который позволяет вам создавать новый экземпляр класса. Это касается логики инициализации.

  1. Имя конструктора должно совпадать с именем класса, но метод может быть создан под любым именем.
  2. Конструкторы не наследуются автоматически дочерними классами, в то время как дочерние наследуют метод от родительского класса, если они не защищены частным ключевым словом.
  3. Конструктор r вызывается явно, в то время как методы implicitaly.
  4. Конструктор не имеет никакого возвращаемого типа, в то время как метод имеет.

Конструктор — это специальная функция, используемая для инициализации элемента данных, где методы являются функциями для выполнения конкретной задачи.

Имя конструктора совпадает с именем класса, где имя метода может или не может быть или имя класса.

Конструктор не допускает никакого возвращаемого типа, где методы допускают возвращаемый тип.

«Метод» — это «подпрограмма» — это «процедура» — это «функция» — это «подпрограмма» — это . Та же концепция применяется под многими разными именами, но в основном это именованный сегмент кода, который вы можете " вызов "из какого-то другого кода. Обычно код каким-то образом аккуратно упакован, с каким-то «заголовком», который дает свое имя и параметры, и «телом», установленным с помощью BEGIN & END или < & >или чем-то подобным.

«Контрактор» — это особая форма метода, целью которого является инициализация экземпляра класса или структуры.

И вы можете отличить конструктор от других методов, потому что конструктор имеет имя класса для своего и не имеет объявленного .

(Конечно, в Java вы создаете новый экземпляр класса с помощью оператора new — new ( ) .)

Основное различие дано ниже —

1: конструктор должен иметь то же имя, что и имя класса, а это не относится к методам

2: Конструктор инициализирует объекты класса, а метод — нет. Методы выполняют операции над объектами, которые уже существуют. Другими словами, для вызова метода нам нужен объект класса.

3: Конструктор не имеет возвращаемого типа, но метод должен иметь возвращаемый тип

Конструктором обычно является Метод .

Когда мы создаем объект класса, использующий оператор new, мы вызывали специальный вид метода, называемый constructor.

Конструктор, используемый для инициализации переменной экземпляра.

Локальная переменная A в конструкторе: Contructor Распечатать мне

Итак, показывайте здесь только метод конструктора Diff (), потому что мы создаем объект класса Diff. В этом случае конструктор всегда стоит первым, чтобы создать экземпляр класса Class здесь Diff ().

Конструктор настроен особенность.

Здесь все начинается с того, что когда мы вызываем объект ob в конструкторе основного метода, он берет этот класс, создает копию и загружает ее в «загрузчик классов виртуальных машин Java».

Этот загрузчик классов берет эту копию и загружает в память, так что теперь мы можем использовать ее, ссылаясь.

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

Чем отличаются методы от конструкторов в java?

Чем отличаются методы от конструкторов в java? Для чего нужно то и другое?

Главное отличие между конструкторами и методами в том, что конструкторы инициализируют объекты, создаваемые с помощью оператора new , в то время как методы выполняют операции с уже существующими объектами.

Конструкторы не могут быть вызваны напрямую; они вызываются когда объект создается с помощью ключевого слова new . Методы же, могут быть вызваны напрямую у объекта, который уже был создан.

Определение конструкторов и методов похожи. Они могут принимать параметры, иметь модификаторы (т.е. public ), а так же имеют тело которое будет выполняться.

Конструкторы могут иметь только имя совпадающее с именем класса. Из них нельзя ничего возвращать, даже void , так как на самом деле они уже возвращают новый объект.

Читайте также: