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

Объектно-ориентированное программирование и Java

Вступление Эта серия будет сборником моих заметок, пока я читаю “Объект”… С тегами java, ооп, новички, тристан.

Наследование

  • В объектно-ориентированном программировании (ООП) наследование очень важно для повторного использования кода. Наследование позволяет суперклассам распространять свои свойства вниз на подклассы. Теперь, когда мы немного поговорили о наследовании, я опубликую весь код, а затем мы оба пройдемся по нему строка за строкой. Наш код будет состоять из класса Сотрудников, класса Сотрудников, класса менеджеров и класса секретарей.
public class Person {
    private String name;

    Person(String name){
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

}

Класс лиц

  • Этот класс Person будет нашим основным суперклассом, он находится на вершине нашей иерархии классов, и все остальные классы унаследуют его. Мы видим, что это очень простой класс, у него есть переменная экземпляра типа String с именем name и метод получения getName(). Наконец, мы видим метод, который имеет то же имя, что и класс, это конструктор. Но что такое конструктор на самом деле?

Что такое конструктор?

  • Конструкторы колодцев – это методы, которые имеют то же имя, что и их содержащий класс. У нас даже может быть несколько конструкторов, если их сигнатуры методов различны. Сигнатура метода, представляющая собой комбинацию имени метода, его типа параметра и количества параметров. Если мы определим два идентичных конструктора, то получим ошибку времени компиляции.

  • Не всем классам нужен конструктор, если мы не определим конструктор, компилятор Java определит его для нас. Этот конструктор будет конструктором по умолчанию без параметров. При работе с наследованием следует с осторожностью использовать конструктор по умолчанию, поскольку он вызовет метод конструктора суперклассов по умолчанию. Если в суперклассе не существует конструктора, то будет создана ошибка компиляции.(подробнее об этом позже в этом посте). Теперь давайте перейдем к классу Сотрудников.

public class Employee extends Person{

    private float basicSalary;
    private String employeeNumber;

    Employee(String name,String employeeNumber,float basicSalary){
        super(name);
        this.employeeNumber = employeeNumber;
        this.basicSalary = basicSalary;
    }

    public String getEmployeeNumber() {return employeeNumber;}
    public float getBasicSalary() {return basicSalary;}

    //WE ARE RUNNING STUFF FROM HERE
    public static void main(String[] args) {
        Manager m = new Manager("Bob1","01234M",9000.0f,2000.0f);
        Secretery s = new Secretery("Bob2","98765s",2500.0f);

        System.out.print("The Manager" + m.getName() + "Employee number ->" + m.getEmployeeNumber());
        System.out.println("has a salary of" + m.getBasicSalary());
        System.out.println("Secretery has a salary of" + s.getBasicSalary()+ "Employee number ->" + s.getEmployeeNumber());

        System.out.print("The Manager " + m.getName());
        System.out.println("has a allowance of" + m.getAllowance());


    }
}

Класс сотрудников

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

Расширяться

  • Это ключевое слово говорит нам, что класс Employee является подклассом класса Person, но что такое подкласс? Хороший вопрос!

Что такое подкласс?

  • Согласно документации, “подкласс наследует все общедоступные и защищенные элементы своего родителя, независимо от пакета. Если подкласс находится в том же пакете, что и родительский, он также наследует закрытый элемент пакета родительского класса.”. В типичном стиле документации это вызывает больше вопросов, чем ответов. Что такое пакет?, что такое частный, защищенный и пакет-частный? Итак, давайте ответим на эти вопросы, и тогда мы сможем понять, что такое подкласс.

Что такое посылка?

  • Пакет – это способ организации связанных классов, в этом отношении пакеты похожи на файлы. Если пакеты похожи на файлы, то зачем иметь и то, и другое? Ну, пакеты на самом деле отличаются от файлов 3 основными способами.

1) Разрешение конфликтов имен : пакеты позволяют нам делать такие вещи, как этот com.zzz. Круг и ком.гггг. Круг, который, хотя и носит одно и то же название Круг на самом деле это два разных класса, и к ним можно относиться так. Этот тип гибкости называется Управление пространством имен .

2) Распространение : пакеты позволяют распространять коллекцию повторно используемых классов, обычно в формате, известном как архив Java (JAR) файл.

3) Контроль доступа : существуют модификаторы контроля доступа, защищенные и защищенные пакеты (подробнее об этом позже), которые специфичны для пакетов. Они определяют, что доступно из одного пакета в другой.

Что такое модификатор контроля доступа?

  • Эти модификаторы определяют, какие классы и методы могут использовать измененные классы, методы и переменные. Существует 4 модификатора управления, но когда ничего не определено, модификатор доступа по умолчанию устанавливается в package private .

1) общедоступный : это позволяет любому классу или методу получить доступ к тому, что было изменено ключевым словом public .

2) частный : ограничивает доступ только к классу.

3) частный пакет (по умолчанию) : это значение по умолчанию, если модификаторы не указаны. Все классы в одном пакете имеют доступ к тому, что было изменено. Однако подклассы из другого пакета не имеют доступа к частным методам и переменным пакета суперкласса.

4) защищенный : имеет те же ограничения, что и закрытый пакет но это позволяет доступ к подклассам.

Переменные экземпляра

  • Переменные экземпляра – это просто переменные, которые получают новые значения при каждом новом создании объекта. В классе Employee переменными экземпляра являются частная плавающая базовая зарплата и частная строка employeeNumber . частная строка должна быть нам знакома. Все это говорит о том, что существует переменная типа string, доступная только для методов внутри этого класса. Но что такое тип float ? Проще говоря, float – это примитивный тип данных, который можно использовать для хранения чисел с десятичными знаками, но он не так точен, как тип double. Вы также заметите число, подобное этому 2000.0f f должен сообщить компилятору, что это тип float. Если f отсутствует, то компилятор будет считать, что тип является двойным. Если вы хотите по-настоящему разобраться в технических тонкостях того, что такое float , то я бы посоветовал вам погуглить 32-разрядный IEEE 754 с плавающей запятой с одинарной точностью . Это приведет вас к арифметической кроличьей норе с плавающей запятой.

Конструктор

  • Теперь давайте перейдем к конструктору класса Employee. Вы заметите метод супер (имя) . В данном случае мы используем метод super для вызова конструктора суперкласса и присвоения ему параметра name.

  • Когда у нас есть конструктор, который является подклассом, и мы не определяем метод super(…args), компилятор Java создаст свой собственный метод super() в конструкторе. Если у суперкласса нет конструктора без аргументов, то мы получим ошибку времени компиляции. Вы можете сами заметить эту ошибку, если удалите супер(имя) из конструктора сотрудников.

Класс секретарши

public class Secretery extends Employee{
    Secretery(String name, String employeeNumber, float basicSalary){
        super(name,employeeNumber,basicSalary);
    }
}

  • Это очень простой класс, который расширяет класс Employee , все, что мы видели раньше. Однако, когда происходит вызов конструктора, мы вызываем супер-метод, который вызывает конструктор Employee , который затем вызывает конструктор Person . Цепочка запускаемых конструкторов называется цепочкой конструкторов .

Класс менеджера

public class Manager extends Employee{
    private float allowance;

    Manager(String name, String employeeNumber, float basicSalary, float allowanceAmt){
        super(name,employeeNumber,basicSalary);

        this.allowance = allowanceAmt;
    }

    public float getAllowance() {
        return allowance;
    }
}

  • Мне очень мало что можно сказать об этом классе, потому что он делает все, о чем мы уже говорили. Это базовый класс Java.

Основной метод сотрудника

  • Основной метод действует как точка входа для нашего приложения, когда мы запустим это приложение, оно начнется с основного метода. Следует также отметить, что вы никогда не должны менять название основного метода. Если вы измените имя основного метода, он перестанет быть основным методом.

  • Наконец, все, что нам нужно сделать, это запустить приложение, и мы должны увидеть все распечатанное на консоли.

System.out.печать()

  • Именно так мы получаем информацию из приложения на консоль. Класс System предоставляет нам доступ к входным и выходным потокам, которые позволяют нам получать данные в наше приложение и из него. выход является выходным потоком, который Система предоставляет нам, и ее назначение вывода предопределено средой. Если вы запустите этот код в eclipse, то предопределенным местом назначения будет консоль eclipse. печать() – это то, что позволяет нам печатать на консоли. Если вы хотите узнать больше о потоках Java, вот Ссылка .
  • Спасибо, что нашли время в свой день, чтобы прочитать этот мой пост в блоге. Если у вас есть какие-либо вопросы или проблемы, пожалуйста, прокомментируйте ниже или свяжитесь со мной по Твиттер .
  • Также не забудьте проверить мой канал YouTube для получения дополнительных учебных пособий по программированию.

Оригинал: “https://dev.to/theplebdev/object-oriented-programming-and-java-3ii1”