Рубрики
Без рубрики

Классы и объекты

Классы и объекты могут использоваться для создания кода, который действует аналогично или имеет аналогичные функции, но с v… С пометкой ооп, java, учебник, новички.

Классы и объекты можно использовать для создания кода, который действует аналогично или имеет схожие функции, но с вариациями. У вас может быть класс под названием “Собака”, в котором хранятся имена собак, количество ног и виды. У каждой собаки свое имя, но это все равно собака. У собаки может быть 4 ноги, а может быть и 3, но это все равно экземпляр Собаки.

Приведенный ниже код показывает определение класса Dog с тремя полями или переменными, одним методом и конструктором. Фрагменты кода написаны на языке программирования Java, что означает, что синтаксис может отличаться в разных языках, но концепции будут одинаковыми. Мы рассмотрим каждую строку этого кода и точно объясним, что здесь происходит.

class Dog{

    public static String species = "canine";
    public int numberLegs;
    private String name;

    public Dog(String name){
        this.name = name;
        numberLegs = 4;
    }

    public String getName(){
        return name;
    }

}

Dog fido = new Dog("Fido");
System.out.println(fido.getName());
System.out.println(fido.numberLegs);
System.out.println(fido.species);

Первая строка в фрагменте кода определяет класс с именем “Собака”, все, что находится во внешних фигурных скобках, является телом класса и составляет наш шаблон собаки.

Class Dog{
    ...
}

Строки с 3 по 5 определяют поля или переменные в нашем классе Dog. Модификатор public означает, что мы можем получить доступ к этим полям за пределами класса, когда мы создаем экземпляры класса Dog, а модификатор private означает, что мы не можем получить доступ к полю за пределами класса. Статический модификатор делает переменную общей для всех экземпляров. Например, все собаки будут иметь один и тот же вид, и если один объект dog изменит это статическое поле, оно изменится для всех остальных экземпляров, тогда как количество, ноги и имя каждого экземпляра будут разными для каждого экземпляра.

“Вид” является строковой переменной и является статическим, общим для всех экземпляров класса, а также общедоступным, что означает, что мы можем получить к нему доступ за пределами класса. Поле ‘numberLegs’ является целочисленным типом переменной и является общедоступным, поэтому мы можем получить к нему доступ извне класса, но оно не является статическим, что означает, что все экземпляры могут иметь разные значения внутри своей собственной версии этой переменной. Последняя переменная называется “имя”, это строка, она закрыта, что означает, что мы не можем получить прямой доступ к ней вне класса, и она не статична.

public static String species = "canine";
public int numberLegs;
private String name;

Следующий раздел нашего кода – это функция конструктора. Эта функция или метод вызывается всякий раз, когда мы создаем новый экземпляр класса Dog. Думайте об этом как об обязательной настройке каждой собаки, о том, что требуется и должно быть инициализировано при создании собаки. В нашей функции конструктора мы не объявляем возвращаемое значение, так как оно не возвращает и не может возвращать никаких переменных. Он принимает один параметр, строковая переменная должна быть передана в конструктор.

Конструктор принимает переменную параметра “имя” и присваивает ее значению свою собственную внутреннюю переменную “имя”. Это означает, что переменная, которую мы даем конструктору, имя вновь созданной собаки, будет присвоена внутренней переменной внутри класса (переменная, объявленная в строке 5). Мы также инициализируем внутреннее поле “numberLegs” значением 4.

public Dog(String name){
    this.name = name;
    numberLegs = 4;
}

Последняя часть нашего класса определяет открытый метод, метод, к которому мы можем получить доступ извне класса, называемый “getName”, который возвращает строковый тип переменной. Этот метод возвращает внутреннюю переменную класса под названием “имя”, это пример метода получения. Вызов этой функции вернет имя собаки, которое мы задали в конструкторе.

Этот метод является общедоступным и поэтому может быть вызван вне класса. Этот метод позволяет нам получить доступ к закрытому полю “имя”, которое определено в классе в строке 5.

public String getName(){
    return name;
}

Последняя часть наших фрагментов кода написана за пределами нашего класса и используется для взаимодействия с классом. Первая строка определяет переменную с именем ‘fido’, которая является типом переменной Dog, и инициализирует переменную в новую собаку и передает строку “Fido” конструктору класса. Ключевое слово new используется для создания нового экземпляра класса Dog и эффективно вызывает конструктор, поэтому мы должны передать строковую переменную при создании переменной.

Следующие три строки взаимодействуют с этим вновь созданным объектом экземпляра. Мы вызываем метод ‘getName’ экземпляра, мы можем сказать, что это вызов метода из-за используемых скобок ‘()’. Этот метод не принимает никаких параметров, поэтому скобки пусты. В этой строке будет выведено слово “Fido”, так как это возвращаемое значение этого метода.

Следующие две строки напрямую обращаются к полям из наших экземпляров. Первое – это поле ‘numberLegs’, которое является нестатической переменной. второе – это поле “видов”, которое является статичным. Это означает, что поле “numberLegs” может отличаться во всех экземплярах класса Dog, но поле “вид” одинаково во всех экземплярах.

Dog fido = new Dog("Fido");
System.out.println(fido.getName());
System.out.println(fido.numberLegs);
System.out.println(fido.species);

Приведенный ниже фрагмент кода показывает, как работают статические и нестатические поля. Сначала мы создаем новый экземпляр класса Dog под названием “приятель” и передаем конструктору другое имя. Затем мы меняем поля “Количество ног” и “виды” нашей новой переменной buddy. Затем операторы печати распечатывают эти два поля, “numberLegs” и “виды”, как из нашего экземпляра “фидо”, так и из нашего экземпляра “приятель”. Количество ног будет числом 4 для “фидо”, но числом 3 для “бадди”, потому что оно нестатично. В поле “вид” будет выведено “Млекопитающее” для обоих экземпляров, поскольку оно является статической переменной и поэтому является общим для всех экземпляров.

Dog buddy = new Dog("Buddy");
buddy.numberLegs = 3;
buddy.species = "Mammal";

System.out.println(fido.numberLegs);
System.out.println(fido.species);

System.out.println(buddy.numberLegs);
System.out.println(buddy.species);

Эта статья была первоначально опубликована на моем сайте: Эта статья была первоначально опубликована на моем сайте:

Оригинал: “https://dev.to/acroynon/classes-and-objects-28b6”