Архитектура программирования (06): объектно-ориентированная Java

Исходный код этой статьи: GitHub · нажмите здесь || GitEE · нажмите здесь

1. Основные понятия

1. Объектно-ориентированная концепция

Основная идея объектно-ориентированного программирования состоит в том, чтобы разложить каждую транзакцию, составляющую проблему, на различные объекты.Цель создания объектов состоит не в том, чтобы завершить этап, а в описании поведения объекта на всем этапе решения проблемы.

Архитектура программирования (06): объектно-ориентированная Java

2. Классы и предметы

Объект: единственное, что реально существует; в приложении объект представляет собой комбинацию данных и действия, которая может не только выполнять операции, но и записывать результаты операций.

Класс: абстрактное понятие, которое фактически представляет собой извлечение общих атрибутов и поведения определенных типов вещей; например, класс User [name.age.gender] используется для описания основной информации пользователей.

Как понять объектно-ориентированную разработку на Java: построить подходящую систему API-интерфейса объектного интерфейса, создать подходящие объекты и решить подходящие проблемы. Например, в JDK API определены классы, и объекты, созданные этими классами, используются напрямую; они создаются пользовательскими классами Использование объектов в режиме MVC, различные бизнес-функции создают разные интерфейсы и системы классов.

3. Свойства и методы

Переменная класса

Разница в местоположении:

  • Переменные-члены определяются вне метода, внутри класса;
  • Локальные переменные определены в методе.

Разница в функциях:

  • Роль переменных-членов состоит в описании общедоступных свойств класса вещей.
  • Роль локальных переменных - предоставить переменную для внутреннего использования в методе.

Разница начального значения:

  • Переменные-члены имеют начальные значения по умолчанию.
  • Локальные переменные не имеют начального значения по умолчанию и должны быть инициализированы, прежде чем их можно будет использовать.

Жизненный цикл:

  • Он существует при создании объекта и исчезает при исчезновении объекта.
  • Локальные переменные существуют, когда оператор, создающий переменную, выполняется при вызове соответствующего метода. Как только локальная переменная выходит за пределы своей собственной области видимости, она немедленно исчезает из памяти.

Метод в классе

Конкретное описание функции класса, которая может быть методом класса или методом объекта;

  • Методы класса, также известные как статические методы, вызываются напрямую с помощью классов, обычно используемых классов инструментов;
  • Методы объекта, также называемые методами экземпляра, вызываются с использованием объектов класса, общих методов API;

Метод строительства

Функция конструктора заключается в инициализации соответствующего объекта. Если нет типа возвращаемого значения, имя функции конструктора должно соответствовать имени класса. Если класс не объявляет конструктор явно, то компилятор java будет Добавьте в класс конструктор без параметров. Если класс был явно написан с помощью конструктора, компилятор java не будет добавлять конструктор без параметров для класса. Конструктор может быть В классе есть несколько перегрузок.

4. Интерфейс

Интерфейс - это специальный класс. Модификатор по умолчанию для переменных-членов интерфейса - public-static-final, а методы в интерфейсе - абстрактные методы. Модификатор по умолчанию - public-abstract. Интерфейс не может создавать объекты и не имеет метода построения. Да, интерфейс используется при реализации класса.Если неабстрактный класс реализует интерфейс, должны быть реализованы все методы в интерфейсе.

Роль интерфейса: разделение программы, определение ограничения, спецификация класса реализации, если вам нужно расширить специальную функцию, она также может быть реализована на основе формы интерфейса.

Отношения между классом и интерфейсом: отношение множественной реализации; отношение между интерфейсом и интерфейсом: отношение множественного наследования.

5. Перегрузка и перезапись

Переписывание метода

Когда функция родительского класса не может удовлетворить потребности дочернего класса, метод можно переписать, то есть дочерний родительский класс использует функцию с тем же именем, а метод, переопределенный дочерним классом, использует аннотацию @Override. Здесь существует отношение наследования.

  • Имя метода и список параметров должны быть согласованы;
  • Модификатор разрешений подкласса должен быть больше или равен модификатору разрешений родительского класса;
  • Тип возвращаемого значения подкласса должен быть меньше или равен типу возвращаемого значения родительского класса;
  • Тип исключения, создаваемый подклассом, должен быть меньше или равен типу исключения, создаваемому родительским классом;

Перегрузка метода

В классе есть две или более функций с одинаковыми именами, которые называются перегрузками методов.Имена функций должны быть согласованными, а списки параметров несовместимы (количество параметров или типы параметров несовместимы).

6. Пакеты и разрешения

Модификатор разрешения

Модификатор разрешений предназначен для управления видимостью области видимости измененного члена, разделенной на: общедоступный, частный, защищенный, по умолчанию (без изменений). Только общедоступные и защищенные могут быть доступны в разных пакетах, а защищенные должны быть доступны в соответствии с отношениями наследования.

Пакетный пакет

Пакет можно понимать как папку в компьютерной системе для решения проблемы повторяющихся конфликтов имен классов.Имя пакета пишется строчными буквами, и оператор должен находиться в первом операторе в файле java.

2. Основные характеристики

Пакет

Скрыть детали внутренней реализации класса и предоставить доступ только к внешнему интерфейсу. Например, все атрибуты-члены (переменные-члены) общего класса сущности в фактическом сценарии разработки должны быть инкапсулированы, что можно рассматривать как защитный барьер для предотвращения кода этого класса К данным произвольно обращается код, определенный внешним классом.Правильная инкапсуляция может упростить понимание и поддержку программного кода, а также повысить безопасность.

наследовать

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

Полиморфизм

Полиморфизм означает, что объект может иметь множество форм, например: переменная ссылочного типа родительского класса указывает на объект подкласса; переменная ссылочного типа интерфейса указывает на объект класса реализации интерфейса; эта ситуация существует в отношении наследования или реализации. В случае полиморфизма, когда есть переменная-член с тем же именем в подчиненном классе, осуществляется доступ ко всем членам родительского класса, за исключением нестатических функций с тем же именем.

3. Общие ключевые слова

1. Это ключевое слово

Ключевое слово this представляет вызывающий объект функции. Если есть переменные-члены и локальные переменные с тем же именем, по умолчанию используется доступ к данным локальной переменной внутри метода. Данные переменной-члена могут быть указаны с помощью ключевого слова this в конструкторе Вы можете вызвать другой конструктор для инициализации объекта.

2. Статическое ключевое слово

Статическая измененная переменная-член: если есть данные, которые необходимо использовать для всех объектов, можно использовать статическое изменение.

Статическая измененная функция-член: к статическому методу можно получить доступ, не полагаясь на какой-либо объект. Нестатические методы / переменные-члены должны полагаться на определенные вызываемые объекты.

Статические модифицированные блоки кода: ключевое слово static используется для упаковки статических блоков кода для повышения производительности программы. Блоки статического кода могут быть размещены в любом месте класса. Когда класс загружается впервые, каждый блок статического кода будет выполняться по очереди.

3. Супер ключевое слово

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

4. Ключевое слово Instanceof

Роль ключевого слова instanceof: чтобы определить, принадлежит ли объект к указанной категории, объект и указанная категория должны иметь отношение наследования или реализации. Это ключевое слово обычно используется для оценки перед принудительным преобразованием типа, а затем для выполнения преобразования.

5. Заключительные ключевые слова

Окончательный измененный класс: указывает, что класс не может быть унаследован.Переменные-члены в последнем классе могут быть установлены как final по мере необходимости, но обратите внимание, что все методы-члены в последнем классе будут неявно обозначены как final методы.

Метод окончательной модификации: метод блокировки не позволяет любому унаследованному классу изменять его значение; вторая причина - эффективность, последний метод родительского класса не может быть переопределен подклассом.

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

6. Абстрактные ключевые слова

Абстрактный модифицированный класс: абстрактный класс не может быть создан. Разница между абстрактным классом и интерфейсом заключается в том, что в интерфейсе не может быть методов экземпляра для реализации бизнес-логики, в то время как абстрактные классы могут иметь методы экземпляра и реализовывать бизнес-логику. Абстрактные классы не могут использоваться Последняя модификация ключевого слова, потому что окончательный измененный класс не может быть унаследован, а для абстрактных классов необходимо реализовать абстрактные методы через наследование.

Абстрактный метод модификации: абстрактный метод не имеет тела метода, что похоже на метод интерфейса. Абстрактный метод не может быть изменен с помощью частного, потому что абстрактный метод должен быть реализован с помощью подкласса, а абстрактный метод не может быть изменен с помощью статического. Абстрактный класс. Абстрактный метод не имеет смысла.

Четыре, анализ сцены

1. Шаблон проектирования

Объектно-ориентированные шаблоны и шаблоны проектирования - очень популярные концепции в последние несколько лет. Вопросы, которые необходимо задавать на собеседованиях. Если вы хотите использовать шаблоны проектирования в программировании, вы должны понимать объектно-ориентированный механизм, который представляет собой высокую степень абстракции и инкапсуляции проблемы и слой за слоем. Решите реализацию, улучшите повторное использование кода, читаемость, гибкость, ремонтопригодность, и самое главное - иметь высокий стиль.

2. Система потоков ввода-вывода

Если вы хотите понять код объектно-ориентированных шаблонов и шаблонов проектирования, вы можете сосредоточиться на чтении API системы потоков ввода-вывода в Java, интерфейса верхнего уровня, нисходящей реализации, класса упаковки и класса расширения.Эти две концепции действительно используются в крайних случаях. Конечно, поток ввода-вывода является ядром обработки файлов, и его также стоит прочитать исходный код.

3. Модель разработки MVC

В модели разработки MVC интерфейс бизнес-уровня и реализация бизнес-уровня; интерфейс базы данных и реализация доступа к данным также являются самым основным объектно-ориентированным интерфейсом использования и классом реализации интерфейса.

Пять, адрес исходного кода

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

Рекомендуемая литература: завершение системы программирования

Серийный номер название проекта Адрес GitHub Адрес GitEE рекомендуемые
01 Java описывает шаблоны проектирования, алгоритмы и структуры данных GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆☆
02 Основы Java, параллелизм, объектно-ориентированный подход, веб-разработка GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆
03 Подробное объяснение случая базового компонента микросервиса SpringCloud GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆
04 Комплексный пример микросервисной архитектуры SpringCloud GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆☆
05 Начало работы с базовым приложением SpringBoot framework для расширенного GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆
06 Фреймворк SpringBoot интегрирует и разрабатывает общее промежуточное ПО GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆☆
07 Базовый случай управления данными, распределения, проектирования архитектуры GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆☆
08 Серии больших данных, хранилище, компоненты, вычисления и другие структуры GitHub · нажмите здесь GitEE · Нажмите здесь ☆☆☆☆☆   

рекомендация

отblog.51cto.com/14439672/2540516