В этой статье я попробую простым языком и кратко рассказать, что такое класс в общем смысле и применительно к языку Java.
В общем смысле класс – это абстракция какого-нибудь предмета или явления. Например, если мы пишем приложение телефонный справочник, то со 100%-й вероятностью можно утверждать, что в нем будет как-то описываться человек. В этом описании, например, будет фигурировать ФИО этого человека, его адрес и его телефонный номер.
Это его описание есть абстракция. Абстракция – это упрощение какого-то понятия или предмета. В данном случае мы упростили человека до ФИО, адреса и телефона. Нам совсем нет необходимости учитывать такие понятия как его рост, возраст или трехмерную модель. От всего этого мы абстрагировались.
Еще можно сказать, что класс – это чертеж объекта или понятия. В этом чертеже мы учитываем только важные характеристики. Эти характеристики могут варьироваться в зависимости от поставленной задачи. Например, для приложения телефонный справочник достаточно ФИО, адреса и телефонного номера. А для приложения, которое высчитывает ваш индекс массы тела нужно знать только ваш рост, вес, пол и возраст. Оно полностью абстрагировалось от таких понятий как ФИО, адрес и телефон.
Думаю я простым языком смог рассказать, что такое класс. Давайте теперь создадим несколько классов используя язык java. Далеко ходить не будем и создадим класс человек для двух гипотетических приложений телефонный справочник и программа расчета индекса массы тела.
Например, для телефонного справочника он может выглядеть так.
class Person { private String firstName; private String secondName; private String address; private String phoneNumber; }
Грубо говоря в java класс – это некая структура для удобства объединяющая в себе несколько переменных (полей класса) и действий (методов). По ней будут создаваться объекты. Если кратко, то объекты – это, что-то конкретное, например, Вы, я, Ваша мама и т.д. Это что-то, что сделано по классу (как по чертежу). Этими объектами будет в дальнейшем манипулировать приложение.
Вот еще пример класса человек, но уже для приложения рассчитывающего индекс массы тела.
class Person { private int age; private String sex; private int height; private int weight; }
Теперь он содержит другие поля класса и может содержать другие действия. В java классы могут содержать сотни таких характеристик, выстраиваться в иерархии и содержать внутри себя ссылки на другие классы. Например, вот класс человек для приложения автомобильный парка. Он в себя может включать и другие классы.
class Person { private String firstName; private String secondName; private Car car; private String phoneNumber; } class Car { /* номер автомобиля */ private String number; /* грузоподъемность */ private String liftingCapacity; /* категория водителя */ private String driverCategory; }
В конце добавлю, что Вы не должны зацикливаться на том, что класс может представлять, что-то материальное. Например, класс может представлять такое понятие как список. Который содержит некоторое количество объектов любых других классов. Или даже действие.
Также класс может вообще не содержать никаких полей, а только действия или даже может и действий не содержать. Очень многое зависит от поставленной задачи.
Идея классов пришла из работ по базам знаний, имеющих отношение к исследованиям по искусственному интеллекту. Используемые человеком классификации в зоологии, ботанике, химии, деталях машин, несут в себе основную идею, что любую вещь всегда можно представить частным случаем некоторого более общего понятия. Конкретное яблоко — это в целом некоторое яблоко, вообще яблоко, а любое вообще яблоко — фрукт. (Яблоки и груши – частый пример классов в учебных пособиях по объектно-ориентированному программированию.) При использовании классов все элементы кода программы, такие как переменные, константы, методы, процедуры и функции, могут принадлежать (а во многих языках обязаны принадлежать) тому или иному классу.
В объектно-ориентированной программе флажок «уволен» будет объявлен приватным членом некоторого класса, а для чтения и изменения его будут написаны соответствующие публичные методы. Правила, определяющие возможность или невозможность напрямую изменять какие-либо переменные, называются правилами задания областей доступа. Слова «приватный» и «публичный» в данном случае являются так называемыми «