А давайте-ка продолжим разбираться с основами языка. Разберемся с основными понятиями в Java. Как и во многих объектно-ориентированных языках, в Java присутствует понятие класса. При этом Java — полностью объектно-ориентированный язык. Это значит, что любая сущность которую вы создаете в свое программе — есть объект. Ну вот, у нас есть два понятия объект и класс. В чем между ними разница? А тут все очень просто: класс — это шаблон для создания объекта. Если взять чертеж какой-то детали и саму деталь, то в терминах ООП (объектно ориентированного программирования) сам чертеж будет классом, а деталь — объектом этого класса.
Предположим, что если мы описали класс «Человек», у каждого человека есть такие параметры как рост, вес, возраст, цвет волос и цвет глаз, и т.д. Все эти параметры становятся полями класса Человек. Ну а когда мы создадим конкретный экземпляр этого класса, то у каждого поля будут какие-то свои значения: один человек может быть низким и толстым, другой высоким и худым. Помимо этого, все люди могут выполнять какие-то действия, например любой человек может поднять руку, наклониться, побежать, или лечь. В терминах объектно-ориентированного программирования эти действия будут называться методами класса «Человек». Но понятно, что одни люди бегают быстро, а другие медленно в силу каких-то своих личных характеристик. Так и методы в объекте работают с данными самого этого объекта. Ну давай-те попробуем написать свой небольшой класс:
class man { int power; int speed; man(int power, int speed)//Конструктор в Java всегда //носит имя класса { this.power=power; this.speed=speed; } int run(int time) // метод "бежаьт" { return time * this.speed; } int work(int time) // метод "работать" { return time * this.power; } }
Здесь мы смоделировали человека как нечто обладающее двумя параметрами — это сила power и скорость speed. Теперь создадим экземпляры этого класса:
man man1 = new man(100, 120); man man2 = new man(80, 180);
Получается, что мы создали два экземпляра класса man один из которых (man1) обладает силой 100 и скоростью 120, а у другого сила 80, зато скорость 180. Тогда если мы вызовем метод work (работать) для обоих объектов, то man1 за некоторое время выполнит больше работы чем man2 за то же время. Ну а если мы заставим их бежать одно и то же время, то man1 пробежит меньшее расстояние чем man2:
System.out.println(man1.work(10) + " - работа выполненная объектом man1"); System.out.println(man2.work(10) + " - работа выполненная объектом man2"); System.out.println(man1.run(10) + " - расстояние, которое пробежит man1"); System.out.println(man2.run(10) + " - расстояние, которое пробежит man2");
Вот здесь tutor_class.java можно взять полный код класса на Java. Если вы запустите такое приложение, то сразу поймете, о чем я говорю :-).
Надеюсь что достаточно просто объяснил все для новичков. Если есть вопросы или какие-то предложения, не стесняйтесь оставлять комменты! До встречи 🙂
очень интересно, спасибо
А можно где — то посмотреть пример, как связаны класс и объект?
Класс это описание а объект это сущность которая создается по этому описанию как-то так
className objectName = new className();
Просьба объяснить что такое this. ?
Почему без него не обойтись? Как он работает.
Спасибо.
Я думаю надо написать статью на эту тему. На днях займусь. 🙂 а то краткий ответ получится таким же запутанным как и ответ на второй ваш вопрос 🙂
Спасибо, буду ждать.
а еще про super и про конструкторы, также «просто и понятно» как вы умеете.
Если класс — чертеж, объект -деталь, то из этого примера
public class RasterSB extends SeekBar {
…
Paint bmpPaint=new Paint ()
…
как понять что чертеж внутри себя содержит деталь?
bmpPaint — это же объект, т.е. деталь,
а RasterSB — шаблон-чертеж для создания других объектов.
В приведенном вами примере bmpPaint — это не деталь. bmpPaint не будет создан до тех пор пока не будет создана деталь по чертежу RasterSB. Можно сказать что ваш чертеж содержит ссылку на другой чертеж. Ну аналогией будет чертеж автомобиля в котором нет развернутого описания двигателя, но есть ссылка на другой чертеж 🙂 и утверждение что на вашем чертеже есть двигатель описанный в том другом чертеже а так же информация о том, как втыкать двигатель в ваше авто . Таким образом пока вы не создадите сам объект по чертежу RasterSB объект bmpPaint создать не получится.
Проще говоря описание класса включает в себя инструкцию по созданию какого-то объекта, по описанию другого класса. Блин как-то по-моему плохо я это дело объяснил 🙁
Спасибо за Ваш труд!
Все грамотно и по делу.
Занес блог в закладки, буду почитывать!)
Спасибо Вам что читаете. Это для меня лучшая награда 🙂
такой вопрос.
вот в вашем примере класс это человек, а обьект это что?
заранее спасибо
Класс — это человек в общем смысле, любой у кого есть способность мыслить, кто покрыт кожей, у кого два глаза и прочее, что характеризует людей. А объект — это кто-то конкретный, например вы или я 🙂
ага)))))
спасибо большое)))
а вообще очень интересно!!!
Очень интересный и, самое главное, понятный урок. Спасибо.
Рад что было полезно!!! Буду стараться еще!!!
Извиняюсь если это тупой вопрос, я скачал полный код класса, такой вопрос, можно ли создать класс man внутри класса tutor_class?
Конечно можно
Пишите имена классов с большой буквы!
И читайте Java Code Convention!
Это же андройд, тут не надо.
Буду одним из многих, но большое спасибо !!! Настолько просто и понятно нигде не обьясняли !
Здравствуйте,
я новичек, но благодаря бытовым примерам очень доходчиво.
Спасибо большое !!!
Рад что полезно! 🙂
А можно с вами по скайпу (мой : S.Shumilov) пообщаться? Навязчивым не буду.
bilo ochen chotko i ponyatno opisano… spasibo !!!
И вам спасибо что прочитали!
все отлично,но есть одно но,также здесь еще могут смотреть люди,которым сдавать и экзамены по Java и минус в том,что нет конкретных определений поля и метода, а так все очень хорошо написано
Ребят, я же не университетский курс по Java вам предлагаю, я же пишу для тех, кто хочет сам научиться, а не просто сдать экзамены 🙂
Хотя наверно было бы интересно написать учебник 🙂
Спасибо, понятно и доходчиво автор расписал… И ребенок поймет
Спасибо, именно то что искал. Даже сделал маленькую шпаргалку.
Класс — это шаблон для создания объекта.
Сущность которую вы создаете в своей программе — есть объект.
Методы в объекте работают с данными самого этого объекта.
Рад что было полезно!
Спасибо большое !!! Именно то что искал! Просто и интересно!
Рад что пригодилось! )))
Очень просто и доходчиво!
Спасибо огромное!
Вы объяснили понятнее всего)
Спасибо!)
Хороший урок, все понятно. Спасибо.