Эта статья в основном изучает мультиплексированные классы в программировании Java. Так что же такое мультиплексированный класс и каково его использование? Вот подробное введение.
Прочитав интервью с Ло Луо Шенгьяном, я не мог не восхищаться им. Он был очень молод. Я думал, что был в том же возрасте, что и Луо Йонгао, и я встретил одного из крупных парней, которые не были младшими и старшими программами средней школы. После интервью я обнаружил, что Луо Луо также был человеком, который сделал один шаг за раз. Не говорите, что это трудно сделать, или вы не можете этого сделать. Вы не пробовали или не упорствовали.
Если вы не можете лететь, тогда бегите, если вы не можете бежать, тогда ходите, если вы не можете ходить, поползти, но
Что бы вы ни делали, вы должны продолжать двигаться вперед-Мартин Лютер Кинг.
Название повторного использования класса было трудно понять в начале. Позже я пошел, чтобы прочитать оригинальную английскую версию книги. На самом деле, название было повторно использовать занятия, а повторное использование классов означало «использование готовых вещей». Фактически, два метода реализации часто слышат в сочетаниях Java - в комбинации и наследстве.
(1) Комбинация
Роль Has-A.
открытый класс TV {Show Show; public String toString () {return "ShowGirl"; }} класс Show {} Давайте упомянем метод Tostring. Если вам нужна строка и вы объект, компилятор будет вызывать метод ToString объекта.
В телевидении есть шоу. Текущее шоу не инициализировано и является нулевым. Метод шоу не может быть вызван.
Комбинация имеет мощный эффект. С объектно-ориентированной точки зрения, если вы создаете класс автомобилей, вы можете легко объединить стекло, свет, двигатель и другие компоненты автомобиля, используя комбинацию.
(2) Наследование
IS-A
Пакет com.myown.iaiti; открытый класс отец {public int i; void get () {System.out.println ("Отец");}} Сон Сон; импорт com.myown.iaiti.*; son public class son расширяет отцо get () {super.get (); System.out.println ("son");}}Здесь есть проблема с разрешениями доступа к пакетам. Если публика не добавлена, по умолчанию будет доступ к участнику в пакете. Различные добычи пакета, то есть метод доступа от отца в сыне, невидим. И публичные слова видны, поэтому я доступ к я.
Частная часть не может быть унаследована и принадлежит родительскому классу, в то время как публичная часть будет унаследована, и методы, которые необходимо изменить, могут быть переписаны. Добавленные атрибуты могут быть добавлены отдельно.
Более того, если первоначальный родительский публичный метод переписывается, если публичный метод первоначального отца не добавит общественности, он не уменьшит видимость унаследованного метода от отца, что означает, что видимость унаследованного метода в родительском классе не может быть уменьшена. Супер ссылается на родительский класс, а именно отца.
Другой момент заключается в том, что на самом деле все классы в Java неявно наследуют класс объекта. Объект - это родительский класс, а другие классы - это подклассы. Иностранцы любят говорить об этом как об базовом классе. Подклассы также называются экспортируемыми классами или полученными классами.
(3) агент
В модели дизайна есть относительно сложный способ понять - модель агента. Автор говорит об этом очень интересно. Агент является доктриной среднего значения комбинации и наследования.
Сын пакета; класс отец {public void get () {System.out.println ("Отец"); }} public Class Son расширяет отец {public static void main (string [] args) {отец f = new отец (); f.get (); }} класс отец poneproxy {private Fath F = new Ofther (); public void get () {f.get (); }}Если вы напрямую относитесь к отцу как к члену, то метод отца будет подвергаться этому классу. Тогда мы можем использовать прокси -класс, как отец Proxy. Я сам определяю, как получить метод получить. Я знаю, что это называет метод получения отца, но человек, который использует мой прокси не знает. Я просто говорю ему, что если вы хотите его использовать, просто используйте метод Get Proxy. Инкапсуляция отражена. Выше приведено просто простой пример случайного стука.
(4) перезагрузить и перезагрузить
класс отец {public void get (String s) {System.out.println ("Отец"); } public void get (boolean b) {System.out.println ("boolean"); }} public Class Son расширяет отец {@Override public void get (String s) {System.out.println ("Отец"); } // @Override // Будет сообщение об ошибке, потому что родительский класс не имеет этого метода, это не переписывание публичного void get (int i) {System.out.println ("sonint"); } public static void main (string [] args) {son s = new son (); S.Get ("D"); S.get (false); S.Get (1); }}Перезапись-это перезаписать метод родительского класса. Если нет переписывания или перегрузки, то когда подкласс вызывает метод, которого нет у подкласса, он фактически вызывает родительский класс.
Перегрузка - это одно и то же имя, но имя параметра отличается. Чтобы не допустить неправильной перегрузки, вы можете добавить тег @Override, который подскажет вам, что вы не переписываете метод.
(5) защищен
Подробное объяснение кода управления для разрешений на доступ к программированию Java
Я написал предыдущую статью заранее, потому что раньше не говорил о наследстве.
Вы можете просто считать защищенным как наследование родительского класса для сына, и другие не заинтересованные классы не могут быть доступны.
(6) Окончательное ключевое слово
Добавление основного типа конечного ключевого слова означает, что эта переменная не будет изменяться после инициализации. Подобно определению C, вы хотите, чтобы переменная в этой программе была этим значением без изменения. Вы можете использовать финал.
открытый класс сын {int возраст = 2; public static void main (string [] args) {final int i = 1; // i = 2; Ценность больше не может быть изменена, конечного сына, сына = новый сын (); // сын = новый сын (); // Окончательная локальная переменная не может быть назначена. // он должен быть пустым и не использовать комплексное назначение // локальная переменная, модифицированная окончательным, не может быть назначено, оно должно быть пустым или не выделено снова son.age = 4; // Хотя ссылка постоянна, сам объект может быть изменен. } void изменение (окончательный int c) {// c = this.age; Не может присвоить новое значение, поскольку значение определяет только ссылку на объект, когда метод передает параметр и определяет, что ссылка на объект аналогична этому // age ++; Нельзя изменить}} Статическая изначально является статической инициализацией, и она используется с финалом, чтобы занять кусок места для хранения, который не может быть изменен.
Статический финал является постоянной в течение периода компиляции. Постоянные имена традиционно названы в соответствии с констант c. Все это заглавные буквы, а слова разделены подчеркиванием.
Статическое окончательное значение_one = 1;
При изменении окончательного метода
public class print {final void не может () {System.out.println (1); }} public Class Printson Extends print {// void не может быть printprint () {} // не может быть переписывается, потому что он изменен окончательным публичным статическим void main (string [] args) {printson ps = new Printson (); ps.cannotprint (); }}Это можно рассматривать как немодифицированное свойство (наследство наследственных), что родительский класс требует, чтобы детский класс должен был наследовать. Private неявно указан как окончательный, потому что Private не дает вам наследства вообще. Это более частное, чем давать вам наследство, но не изменять его.
Кстати, очистите разрешения.
Когда окончательный модифицирует класс, он должен предотвратить унаследовать этот класс.
(7) Наследование и инициализация
Проблема заказа здесь - интересный вопрос. Смотрите примеры.
класс дедушка {private static int i = print (); private static int print () {System.out.println ("g"); возврат 1; }} класс Отец расширяет дедушку {private static int i = print (); private static int print () {System.out.println ("f"); возврат 1; }} public Class Son расширяет отец {private static int i = print (); private static int print () {System.out.println ("s"); возврат 1; } public static void main (string [] args) {System.out.println ("First"); }} Результат печати сначала? Неправильный.
Хотя основной метод выполняется, я вижу, что сын, который требует статической инициализации, не имеет его, но результат - сначала?
Существует также проблема инициализации. Сын наследует отца, поэтому компилятор загрузит отца и инициализирует i. Если отец наследует дедушку, то компилятор загрузит дедушку, похожий на рекурсию.
Последний инициализирован - это дедушка I.
Таким образом, конечный результат: G, F, S, First.
Суммировать
Выше приведено подробное объяснение кода мультиплексирования программирования Java в этой статье, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!