Классы, объекты, методы, поля… Понятно о Java (еще немного ООП)

А давайте-ка продолжим разбираться с основами языка. Разберемся с основными понятиями в 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. Если вы запустите такое приложение, то сразу поймете, о чем я говорю :-).

Надеюсь что достаточно просто объяснил все для новичков. Если есть вопросы или какие-то предложения, не стесняйтесь оставлять комменты! До встречи 🙂

Вам понравилось? Было полезно? Поделитесь!

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс
Запись опубликована в рубрике Java основы языка, Знакомимся с Java, Новичку, Программирование с метками , , , , , , , . Добавьте в закладки постоянную ссылку.

33 комментария на «Классы, объекты, методы, поля… Понятно о Java (еще немного ООП)»

  1. PetroSotscase говорит:

    очень интересно, спасибо

  2. Artem говорит:

    А можно где — то посмотреть пример, как связаны класс и объект?

    • davidmd говорит:

      Класс это описание а объект это сущность которая создается по этому описанию как-то так
      className objectName = new className();

  3. Alm говорит:

    Просьба объяснить что такое this. ?
    Почему без него не обойтись? Как он работает.
    Спасибо.

    • davidmd говорит:

      Я думаю надо написать статью на эту тему. На днях займусь. 🙂 а то краткий ответ получится таким же запутанным как и ответ на второй ваш вопрос 🙂

      • Alm говорит:

        Спасибо, буду ждать.
        а еще про super и про конструкторы, также «просто и понятно» как вы умеете.

  4. Alm говорит:

    Если класс — чертеж, объект -деталь, то из этого примера
    public class RasterSB extends SeekBar {

    Paint bmpPaint=new Paint ()

    как понять что чертеж внутри себя содержит деталь?
    bmpPaint — это же объект, т.е. деталь,
    а RasterSB — шаблон-чертеж для создания других объектов.

    • davidmd говорит:

      В приведенном вами примере bmpPaint — это не деталь. bmpPaint не будет создан до тех пор пока не будет создана деталь по чертежу RasterSB. Можно сказать что ваш чертеж содержит ссылку на другой чертеж. Ну аналогией будет чертеж автомобиля в котором нет развернутого описания двигателя, но есть ссылка на другой чертеж 🙂 и утверждение что на вашем чертеже есть двигатель описанный в том другом чертеже а так же информация о том, как втыкать двигатель в ваше авто . Таким образом пока вы не создадите сам объект по чертежу RasterSB объект bmpPaint создать не получится.
      Проще говоря описание класса включает в себя инструкцию по созданию какого-то объекта, по описанию другого класса. Блин как-то по-моему плохо я это дело объяснил 🙁

  5. Матвей говорит:

    Спасибо за Ваш труд!
    Все грамотно и по делу.
    Занес блог в закладки, буду почитывать!)

  6. Alexandra говорит:

    такой вопрос.
    вот в вашем примере класс это человек, а обьект это что?
    заранее спасибо

    • davidmd говорит:

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

  7. Антон говорит:

    Очень интересный и, самое главное, понятный урок. Спасибо.

  8. Tore говорит:

    Извиняюсь если это тупой вопрос, я скачал полный код класса, такой вопрос, можно ли создать класс man внутри класса tutor_class?

  9. User говорит:

    Пишите имена классов с большой буквы!
    И читайте Java Code Convention!

  10. Iva говорит:

    Буду одним из многих, но большое спасибо !!! Настолько просто и понятно нигде не обьясняли !

  11. Сергей говорит:

    Здравствуйте,
    я новичек, но благодаря бытовым примерам очень доходчиво.
    Спасибо большое !!!

  12. Сергей говорит:

    А можно с вами по скайпу (мой : S.Shumilov) пообщаться? Навязчивым не буду.

  13. narek говорит:

    bilo ochen chotko i ponyatno opisano… spasibo !!!

  14. Snatch говорит:

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

    • davidmd говорит:

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

  15. спасибо говорит:

    Спасибо, понятно и доходчиво автор расписал… И ребенок поймет

  16. Oleg говорит:

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

  17. romic говорит:

    Спасибо большое !!! Именно то что искал! Просто и интересно!

  18. Sergey говорит:

    Очень просто и доходчиво!
    Спасибо огромное!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *