Во время интервью интервьюер спросил, как вы понимаете объектно-ориентированное программирование? Думаю, многие процитируют его по вопросам на собеседовании Объектно-ориентированный, разве это не наследование, инкапсуляция и полиморфизм? Уведомление,Интервьюер попросил здесь услышать ваше понимание объектной ориентации, а не дать вам запомнить понятия.
Объектно-ориентированный — это симуляция реального мира На следующем рисунке мы просто симулируем мир животных.
Одна из трех основных особенностей объектно-ориентированного наследования, здесь Primat наследует Animal, Person наследует Primat, наследование очень простое, больше говорить не буду, смотрите следующую реализацию кода,Комментарии в коде важнее, обратите внимание на.
В коде, будь то животное, птица, человек или обезьяна, мы можем абстрагировать его в класс. Класс является шаблоном объекта. С помощью нового ключевого слова вы можете создавать объекты один за другим. . Посмотрите внимательно на содержимое синей коробки,Хотя животные1 и животные2 имеют одинаковую форму (Животное), поскольку они указывают на объекты подкласса, при вызове одного и того же метода eat() среда выполнения будет разумно соответствовать реализации подкласса, и конечный результат будет другим. Эта форма называется полиморфизмом.
Полиморфизм должен удовлетворять трем условиям.
один,иметь наследство;(Человек наследует Животное, а Обезьяна также наследует Животное)
два,приходится переписывать;(оба переопределяют метод eat родительского класса)
три,Ссылка родительского класса указывает на объект дочернего класса.(содержимое красного поля)
Посмотрите на рисунок ниже и используйте функцию сопоставления кода в среде IDE, чтобы увидеть, что объект person4 может получить доступ к атрибутам имени, пола, методам eat() и printAge(), но не может получить доступ к атрибуту age и методу isLady(). . Это потому, что мы добавили ключевое слово private перед свойством и методом. Скрываем свойство age и метод isLady(), которые мы не хотим показывать клиенту (здесь клиент является основным методом), но мы предоставляем клиенту метод printAge для печати возраста, но перед печатью возраста, делаем серию обработки (не печатает возраст дамы).
Для такого рода свойств скрытых объектов и деталей реализации внешнему миру доступны только указанные методы для управления доступом и изменением свойств в программе, что мы называем инкапсуляцией.(Здесь мы не предоставляем метод set для возраста, который вообще нельзя изменить, а метод printAge() предоставляется для внешнего доступа).
На работе у нас может быть такое требование, что когда объекты Person имеют одинаковое имя, возраст и пол, они рассматриваются как одно и то же лицо. если бы ты видел меня раньшеГоворить о равных в Java (вкл.) — знать столбецЛюди с одним артиклем не должны использовать == или равно для прямого сравнения.Ниже приведены результаты.
Если использование == и equals не удается, разработчик может написать следующий код, чтобы оценить
Когда я писал логику age, я обнаружил, что, поскольку атрибут age является закрытым, а метод getAge() не предоставляется, атрибут age нельзя получить.Он может предоставить метод getAge() в классе Person или удалить ключевое слово private of age. , хотя это также может завершить логику, это заставит последующих пользователей этого класса больше не вызывать printAge для вывода возраста, а напрямую обращаться к атрибуту age или методу getAge() для вывода, и возраст дамы будет выставлен. .Очевидно, что такой подход нарушает нашу предыдущую инкапсуляцию возраста, и делать это не рекомендуется..
Возраст является частным, тогда мы не делаем этого кода в объекте человека? хорошая идея,Сравнение двух объектов на предмет равенства должно решаться не клиентом, а самими объектами. Это также один из объектно-ориентированных методов.
Используя приведенные выше идеи, мы расширяем метод Person,
Вроде бы все идеально, результат такой, как мы и ожидали, проблема вроде бы решена.
Мы знаем, что элементы в Set не имеют порядка, и элементы не могут повторяться.Пожалуйста, обратите внимание на результат выполнения следующего кода:
Я надеюсь, что после прочтения этой главы у читателей появятся собственные взгляды и мысли об объектно-ориентированном, а не о шести словах, которые фигурируют в вопросах интервью, полиморфизме, наследовании и инкапсуляции. Вы даже можете улыбнуться интервьюеру, ах, у меня еще нет цели, и у меня есть много времени, чтобы посвятить своей работе.
В области комментариев некоторые люди говорят, что животное, Primat следует объявлять как абстрактные категории, а не интерфейс, на самом деле возможны два способа. Если животное временно неопределенно, существует определенная форма, рекомендуется объявить интерфейс.Поскольку класс может реализовывать несколько интерфейсов, он может только унаследовать класс, и декларация более гибкая, как интерфейс, что позволяет лучше добиться лучшей масштабируемости..
Примечание. Эта колонка была впервые опубликована в общедоступной учетной записи: sayayJava. Все примеры кодов были загружены на официальный аккаунт, обратите внимание на загрузку, если вам это нужно.
Если вам нравится эта серия статей, пожалуйста, поставьте лайк или поделитесь со мной. Ваша поддержка является движущей силой для меня, чтобы продолжать. Вы также можете оставить сообщение в области комментариев. Если у вас есть возможность, эта колонка объяснит это. Наконец , не забудьте обратить внимание. Проверьте меня.
Перепечатка приветствуется, но с указанием "автора" и "оригинального адреса". Пожалуйста, сохраните этот абзац в тексте для перепечатки, спасибо за уважение авторских прав. Для коммерческого воспроизведения или публикации, пожалуйста, свяжитесь с автором для получения разрешения.
Предыдущий:Автоупаковка/распаковка Java - Материалы Java
Следующий:Разговор о равных в Java (посередине) - эти вещи в Java