Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
6 / 6 / 3
Регистрация: 22.06.2010
Сообщений: 320

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

26.10.2010, 17:59. Показов 1174. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

Есть код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Automobile {
  private static int number;
 
  Automobile() {
  number++;
  System.out.println("From automobile number = "+number);
}
}
 
 
public class AutomobileTest {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       Automobile lada = new Automobile(),
                  ford = new Automobile(),
                  oka =  new Automobile();
 
    }
 
}
на экран выводится
From automobile number = 1
From automobile number = 2
From automobile number = 3

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

Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2010, 17:59
Ответы с готовыми решениями:

НЕ могу понять классы
Помогите реализовать с коментарии: "Разработайте и реализуйте класс Name_pa±rs, содержащий пару (имя,возраст), где имя— объект класса...

Не могу понять зачем нужны классы
Обьяснити начинающему программисту зачем нужны классы???

Не могу понять задание,пожалуйста.Классы
Реализовать в задании три конструктора (без аргументов, инициализации, копирования) и деструктор. Реализовать в конструкторе...

8
эволюционирую потихоньку
 Аватар для TanT
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
26.10.2010, 19:52
ты создаёшь три объекта, в каждом объекте вызывается конструктор при создании объекта, в конструкторе стоит вывод на консоль. вот
0
6 / 6 / 3
Регистрация: 22.06.2010
Сообщений: 320
26.10.2010, 20:48  [ТС]
спасибо, понятно но не до конца. Вызывается конструктор или метод при создании объекта?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
26.10.2010, 20:50
dimiby, при создании объекта используется ключевое слово new, которое неявным образом вызывает конструктор. В конструкторе вы можете вызывать все что угодно
1
6 / 6 / 3
Регистрация: 22.06.2010
Сообщений: 320
26.10.2010, 23:34  [ТС]
спасибо)))

Т.е. мы по сути говоря вызываем метод Automobile()? Это метод, я правильно понял?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
27.10.2010, 00:00
Automobile() - это не метод, это конструктор.

Конструктор можно отличить от метода по двум признакам:
1) его имя совпадает с именем класса
2) он не возвращает значений
0
 Аватар для Fury
3 / 3 / 0
Регистрация: 23.10.2010
Сообщений: 10
27.10.2010, 00:27
Цитата Сообщение от dimiby Посмотреть сообщение
спасибо)))

Т.е. мы по сути говоря вызываем метод Automobile()? Это метод, я правильно понял?
По сути говоря, специально конструктор мы не вызываем. Просто при создании какого-либо объекта любого класса вызывается конструктор этого класса. Создашь 100 объектов класса "Собака" - при каждом создании объекта будет вызываться конструктор.

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

Например:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class Automobile {
  private static int number;
 
  Automobile(int n) {
  number=n;
  System.out.println("From automobile number = "+number);
}
}
 
//.....................
Automobile lada = new Automobile(5);
 
}

И, пожалуй, не соглашусь с M128K145: конструктор, это метод класса, имя которого совпадает с именем самого класса.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
27.10.2010, 00:39
Цитата Сообщение от Fury Посмотреть сообщение
конструктор, это метод класса, имя которого совпадает с именем самого класса
Это не метод, т.к. это довольно специфическая конструкция, действия и особенности которой не совпадают с методами.
Помимо возвращаемых значений также нельзя сделать конструктор статическим, нельзя его явно вызвать, конструктор по-другому воспринимается компилятором, методом невозможно выделить память под объект.
Думаю, про такие вещи как super() говорить не надо?
0
 Аватар для Fury
3 / 3 / 0
Регистрация: 23.10.2010
Сообщений: 10
28.10.2010, 18:23
Цитата Сообщение от M128K145 Посмотреть сообщение
Это не метод, т.к. это довольно специфическая конструкция, действия и особенности которой не совпадают с методами.
Помимо возвращаемых значений также нельзя сделать конструктор статическим, нельзя его явно вызвать, конструктор по-другому воспринимается компилятором, методом невозможно выделить память под объект.
Думаю, про такие вещи как super() говорить не надо?
Вы меня не так поняли
Говорить что конструктор — это метод, все равно что говорить что австралийский утконос — просто млекопитающее. Чтобы понять кто такой утконос, необходимо знать чем он отличается от других млекопитающих. Чтобы понять сущность конструктора, аналогично, необходимо понять чем он отличается от простого метода.
(с)Сперто с javable.com
Де-юре конструктор - это метод.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2010, 18:23
Помогаю со студенческими работами здесь

Методы сортировки!не могу понять почему не робит!
Всем привет,написал прогу и не работает,не могу понять почему!сколько раз просматривал все норм вроде бы! #pragma argsused #include...

Не могу понять классы. Как их наполнить данными?
Добрый день, форумчане. Пытаюсь изучить классы в ООП, и не могу понять, как с ними работать. Помогите разобраться, к примеру, есть два...

не могу понять ошибки в коде
Запускаю этот код в браузере: function getDate(str){ var regexp = /^(?\d)-(?\d)-(\d{3})$/; var f = str.match(regexp); ...

Не могу понять ошибку в коде
var name1:String="Serik"; var name2:String="Azamat"; var name3:String="Kuanish"; var name4:String="Jansaya"; var...

Учу классы. Не запускается простейшая прога.Не могу понять причину
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <string> using namespace std; class MyDogs{ public: int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru