1 added
1 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>ООП - определение</a><ul><li><a>Принципы ООП</a></li>
1
<ul><li><a>ООП - определение</a><ul><li><a>Принципы ООП</a></li>
2
</ul></li>
2
</ul></li>
3
<li><a>Терминология</a></li>
3
<li><a>Терминология</a></li>
4
<li><a>Наследование - что это</a></li>
4
<li><a>Наследование - что это</a></li>
5
<li><a>Наследование в C++</a><ul><li><a>Конструкторы и деструкторы</a></li>
5
<li><a>Наследование в C++</a><ul><li><a>Конструкторы и деструкторы</a></li>
6
<li><a>Множественное наследование</a></li>
6
<li><a>Множественное наследование</a></li>
7
<li><a>Виртуальное наследование</a></li>
7
<li><a>Виртуальное наследование</a></li>
8
</ul></li>
8
</ul></li>
9
<li><a>Иерархия в Java</a><ul><li><a>Что унаследовано</a></li>
9
<li><a>Иерархия в Java</a><ul><li><a>Что унаследовано</a></li>
10
<li><a>Единичный "подход"</a></li>
10
<li><a>Единичный "подход"</a></li>
11
<li><a>Как объявить</a></li>
11
<li><a>Как объявить</a></li>
12
<li><a>Приведение типов</a></li>
12
<li><a>Приведение типов</a></li>
13
<li><a>Upcasting и Downcasting</a></li>
13
<li><a>Upcasting и Downcasting</a></li>
14
</ul></li>
14
</ul></li>
15
<li><a>Как лучше понять процесс</a></li>
15
<li><a>Как лучше понять процесс</a></li>
16
</ul><p>Программирование предусматривает различные методологии. В зависимости от них меняется функционал выбираемых языков. Огромным спросом пользуется ООП. Здесь в основе заложено взаимодействие объектов, а не "чистая логика" и абстракции.</p>
16
</ul><p>Программирование предусматривает различные методологии. В зависимости от них меняется функционал выбираемых языков. Огромным спросом пользуется ООП. Здесь в основе заложено взаимодействие объектов, а не "чистая логика" и абстракции.</p>
17
<p>В данной статье будет рассказано о том, что собой представляет объектно-ориентированное программирование. Особое внимание уделено наследованию классов и иных элементов. Предложенные сведения окажутся одинаково полезны и новичкам, и продвинутым разработчикам. Акцент будет сделан на Си-семействе (С++), а также Java. Это - непревзойденные лидеры в области ООП.</p>
17
<p>В данной статье будет рассказано о том, что собой представляет объектно-ориентированное программирование. Особое внимание уделено наследованию классов и иных элементов. Предложенные сведения окажутся одинаково полезны и новичкам, и продвинутым разработчикам. Акцент будет сделан на Си-семействе (С++), а также Java. Это - непревзойденные лидеры в области ООП.</p>
18
<h2>ООП - определение</h2>
18
<h2>ООП - определение</h2>
19
<p>Это - специализированная методология программирования, которая опирается на представлении программы в виде некой связи взаимодействующий между собой объектов. Каждый из них - это экземпляр определенного класса. Классы будут образовывать иерархию наследования, о которой сказано далее.</p>
19
<p>Это - специализированная методология программирования, которая опирается на представлении программы в виде некой связи взаимодействующий между собой объектов. Каждый из них - это экземпляр определенного класса. Классы будут образовывать иерархию наследования, о которой сказано далее.</p>
20
<p>Идеологически объектно-ориентированное программирование - это подход к написанию исходного кода утилиты как к моделированию информационных объектов. На новом уровне они решают основную задачу структурного программирования. Этот прием позволяет добиться быстрых и эффективных результатов в крупных проектах.</p>
20
<p>Идеологически объектно-ориентированное программирование - это подход к написанию исходного кода утилиты как к моделированию информационных объектов. На новом уровне они решают основную задачу структурного программирования. Этот прием позволяет добиться быстрых и эффективных результатов в крупных проектах.</p>
21
<h3>Принципы ООП</h3>
21
<h3>Принципы ООП</h3>
22
<p>Каждый программер может освоить любой язык объектно-ориентированного типа. Независимо от выбранного варианта, требуется понять ключевые принципы соответствующего подхода к написанию программного обеспечения.</p>
22
<p>Каждый программер может освоить любой язык объектно-ориентированного типа. Независимо от выбранного варианта, требуется понять ключевые принципы соответствующего подхода к написанию программного обеспечения.</p>
23
<p>Вот основные принципы:</p>
23
<p>Вот основные принципы:</p>
24
<ol><li>Абстракция. Помогает выделять в моделируемом предмете важного для решения конкретных задач. В итоге понимание объекта будет трактоваться в виде класса.</li>
24
<ol><li>Абстракция. Помогает выделять в моделируемом предмете важного для решения конкретных задач. В итоге понимание объекта будет трактоваться в виде класса.</li>
25
<li>Инкапсуляция. Обеспечивает быструю и безопасную организацию иерархической управляемости. Тут ведется уточнение "что делать", а не "как добиться цели".</li>
25
<li>Инкапсуляция. Обеспечивает быструю и безопасную организацию иерархической управляемости. Тут ведется уточнение "что делать", а не "как добиться цели".</li>
26
<li>Наследование. Весьма важный процесс, позволяющий организовывать родственные понятия. На каждом шаге иерархии должны быть понятны только необходимые корректировки, без дублирования "оставшихся" элементов кода.</li>
26
<li>Наследование. Весьма важный процесс, позволяющий организовывать родственные понятия. На каждом шаге иерархии должны быть понятны только необходимые корректировки, без дублирования "оставшихся" элементов кода.</li>
27
<li>Полиморфизм. Нужен для того, чтобы определять точки, в которых единое управление лучше распараллелить или наоборот - скомпоновать в единое целое.</li>
27
<li>Полиморфизм. Нужен для того, чтобы определять точки, в которых единое управление лучше распараллелить или наоборот - скомпоновать в единое целое.</li>
28
</ol><p>Все это помогает работать с классами, а также делать приложение максимально понятным для рядового пользователя. Через рассматриваемую методологию удается добиться высокой детализации проекта.</p>
28
</ol><p>Все это помогает работать с классами, а также делать приложение максимально понятным для рядового пользователя. Через рассматриваемую методологию удается добиться высокой детализации проекта.</p>
29
<h2>Терминология</h2>
29
<h2>Терминология</h2>
30
<p>Перед тем, как разработчик узнает, что такое иерархия, ему нужно запомнить несколько ключевых понятий. Они встречаются в разных языках программирования. Выступают в качестве "базы", без которой дальнейший коддинг становится невозможным:</p>
30
<p>Перед тем, как разработчик узнает, что такое иерархия, ему нужно запомнить несколько ключевых понятий. Они встречаются в разных языках программирования. Выступают в качестве "базы", без которой дальнейший коддинг становится невозможным:</p>
31
<ol><li>Алгоритм - принцип или правила, которые необходимы для достижения изначально поставленной задачи.</li>
31
<ol><li>Алгоритм - принцип или правила, которые необходимы для достижения изначально поставленной задачи.</li>
32
<li>API - интерфейс прикладного программирования. Представлен правилами, протоколами и процедурами, необходимыми для написания контента. Помогает приложениям взаимодействовать друг с другом.</li>
32
<li>API - интерфейс прикладного программирования. Представлен правилами, протоколами и процедурами, необходимыми для написания контента. Помогает приложениям взаимодействовать друг с другом.</li>
33
<li>Аргументы - значения, передаваемые в функции и команды.</li>
33
<li>Аргументы - значения, передаваемые в функции и команды.</li>
34
<li>Символы - элементарные единицы отображения электронных материалов. Выражаются цифирными или буквенными записями.</li>
34
<li>Символы - элементарные единицы отображения электронных материалов. Выражаются цифирными или буквенными записями.</li>
35
<li>Объект - набор связанных переменных, структур данных, а также констант. Они будут отобраны и совместно обработаны утилитой.</li>
35
<li>Объект - набор связанных переменных, структур данных, а также констант. Они будут отобраны и совместно обработаны утилитой.</li>
36
<li>Класс - набор связанных между собой объектов. У таких компонентов есть общие свойства (public).</li>
36
<li>Класс - набор связанных между собой объектов. У таких компонентов есть общие свойства (public).</li>
37
<li>Константы -<a>переменные</a>(значения), которые не меняются на протяжении выполнения кода программы.</li>
37
<li>Константы -<a>переменные</a>(значения), которые не меняются на протяжении выполнения кода программы.</li>
38
<li>Тип данных - способ классификации информации электронного характера определенного типа.</li>
38
<li>Тип данных - способ классификации информации электронного характера определенного типа.</li>
39
<li>Переменная - именованная ячейка выделенной памяти. Может при обработке кода считываться, сохраняться, изменяться согласно представленным программером алгоритмам.</li>
39
<li>Переменная - именованная ячейка выделенной памяти. Может при обработке кода считываться, сохраняться, изменяться согласно представленным программером алгоритмам.</li>
40
<li>Массив - списки схожих типов значений, заранее прошедшие процедуру группировки. Множество информации.</li>
40
<li>Массив - списки схожих типов значений, заранее прошедшие процедуру группировки. Множество информации.</li>
41
<li>Фреймворк - готовый блок кода, используемый для ускорения написания программы. Может корректироваться разработчиком "под себя". Вмещает API, а также классы и объекты, иные инструменты.</li>
41
<li>Фреймворк - готовый блок кода, используемый для ускорения написания программы. Может корректироваться разработчиком "под себя". Вмещает API, а также классы и объекты, иные инструменты.</li>
42
<li>Оператор - объект, манипулирующий операндами.</li>
42
<li>Оператор - объект, манипулирующий операндами.</li>
43
<li>Операнд - элемент кода, которым можно управлять через специальные компоненты: операторы.</li>
43
<li>Операнд - элемент кода, которым можно управлять через специальные компоненты: операторы.</li>
44
<li>Указатели - переменные с адресом места в памяти. Обладают уникальными именами.</li>
44
<li>Указатели - переменные с адресом места в памяти. Обладают уникальными именами.</li>
45
<li>Пакет - организованный модель связанных интерфейсов и классов. Помогают организовывать классы, которые относятся к одной и той же категории или предоставляют соответствующие функциональные возможности.</li>
45
<li>Пакет - организованный модель связанных интерфейсов и классов. Помогают организовывать классы, которые относятся к одной и той же категории или предоставляют соответствующие функциональные возможности.</li>
46
</ol><p>Отдельно можно выделить понятие синтаксиса - это правила и принципы передачи операторов. То, как должен быть написан исходных код.</p>
46
</ol><p>Отдельно можно выделить понятие синтаксиса - это правила и принципы передачи операторов. То, как должен быть написан исходных код.</p>
47
<h2>Наследование - что это</h2>
47
<h2>Наследование - что это</h2>
48
<p>При разборе тем, посвященных методам коддинга и ООП, важно обратить внимание на наследование. Это - одна из основ объектно-ориентированного программирования. При помощи нее класс сможет использовать переменные и методы другого класса, словно собственные.</p>
48
<p>При разборе тем, посвященных методам коддинга и ООП, важно обратить внимание на наследование. Это - одна из основ объектно-ориентированного программирования. При помощи нее класс сможет использовать переменные и методы другого класса, словно собственные.</p>
49
<p>Класс, который наследует данные, является подклассом. Он также носит название производного или дочернего.</p>
49
<p>Класс, который наследует данные, является подклассом. Он также носит название производного или дочернего.</p>
50
<p>Класс, который дает "базу" для наследования" - суперкласс или базовые. Может называться родительским (или просто "родителем").</p>
50
<p>Класс, который дает "базу" для наследования" - суперкласс или базовые. Может называться родительским (или просто "родителем").</p>
51
<p>Наследование полезно, так как оно дает возможность структурирования и повторного использования кода. Это способствует более быстрой и качественной разработке. Но<a>работа с классами</a>и рассматриваемой операцией требует от программера осторожности. Большинство корректировок в суперклассе затрагивают все подклассы. Это влечет за собой непредвиденные последствия.</p>
51
<p>Наследование полезно, так как оно дает возможность структурирования и повторного использования кода. Это способствует более быстрой и качественной разработке. Но<a>работа с классами</a>и рассматриваемой операцией требует от программера осторожности. Большинство корректировок в суперклассе затрагивают все подклассы. Это влечет за собой непредвиденные последствия.</p>
52
<p>Каждый<a>язык программирования</a>предусматривает свои особенности и нюансы применения наследования классов. Далее будет приведен пример на C++, а затем - опубликована полезная информация для разработчиков на Java.</p>
52
<p>Каждый<a>язык программирования</a>предусматривает свои особенности и нюансы применения наследования классов. Далее будет приведен пример на C++, а затем - опубликована полезная информация для разработчиков на Java.</p>
53
<p>В Си Плюс-Плюс выделяются несколько типов наследования:</p>
53
<p>В Си Плюс-Плюс выделяются несколько типов наследования:</p>
54
<ol><li>Публичный. Это - public class. Здесь есть общие (public) и защищенные (protected) данные. Они будут наследоваться без корректировки изначально предусмотренного уровня доступа к оным.</li>
54
<ol><li>Публичный. Это - public class. Здесь есть общие (public) и защищенные (protected) данные. Они будут наследоваться без корректировки изначально предусмотренного уровня доступа к оным.</li>
55
<li>Защищенный. Носит название protected. Вся информация, которая была унаследована, получит статус "защищенной".</li>
55
<li>Защищенный. Носит название protected. Вся информация, которая была унаследована, получит статус "защищенной".</li>
56
<li>Приватный - private. Все передаваемые электронные материалы будут "приватными".</li>
56
<li>Приватный - private. Все передаваемые электронные материалы будут "приватными".</li>
57
</ol><p>Чтобы лучше понимать принципы и методы их работы, стоит рассмотреть наглядный пример. В нем для базового класса Device уровень доступа к электронным материалам остается неизменным. Связано это с тем, что производный класс Computer будет наследовать сведения в виде приватных. Информация для класса Computer будет приватной.</p>
57
</ol><p>Чтобы лучше понимать принципы и методы их работы, стоит рассмотреть наглядный пример. В нем для базового класса Device уровень доступа к электронным материалам остается неизменным. Связано это с тем, что производный класс Computer будет наследовать сведения в виде приватных. Информация для класса Computer будет приватной.</p>
58
<p>Вот так будет выглядеть пример:</p>
58
<p>Вот так будет выглядеть пример:</p>
59
#include <iostream><a>using</a><a>namespace</a>std; class Device { public:<a>int</a>serial_number = 12345678; void turn_on() { cout << "Device is on" << endl; } }; class Computer: private Device { public: void say_hello() { turn_on(); cout << "Welcome to Windows 95!" << endl; } }; int main() { Device Device_instance; Computer Computer_instance; cout << "\t Device" << endl; cout << "Serial number is: "<< Device_instance.serial_number << endl; Device_instance.turn_on(); // cout << "Serial number is: " << Computer_instance.serial_number << endl; // Computer_instance.turn_on(); // will cause compile time error cout << "\t Computer" << endl; Computer_instance.say_hello();<a>return 0</a>; }<p>Здесь:</p>
59
#include <iostream><a>using</a><a>namespace</a>std; class Device { public:<a>int</a>serial_number = 12345678; void turn_on() { cout << "Device is on" << endl; } }; class Computer: private Device { public: void say_hello() { turn_on(); cout << "Welcome to Windows 95!" << endl; } }; int main() { Device Device_instance; Computer Computer_instance; cout << "\t Device" << endl; cout << "Serial number is: "<< Device_instance.serial_number << endl; Device_instance.turn_on(); // cout << "Serial number is: " << Computer_instance.serial_number << endl; // Computer_instance.turn_on(); // will cause compile time error cout << "\t Computer" << endl; Computer_instance.say_hello();<a>return 0</a>; }<p>Здесь:</p>
60
<ol><li>Класс Computer будет использовать метод turn_on() точно так же, как и любой приватный.</li>
60
<ol><li>Класс Computer будет использовать метод turn_on() точно так же, как и любой приватный.</li>
61
<li>Turn_on может быть вызван внутри класса. Попытка обратиться к нему напрямую через<a>main</a>повлечет за собой ошибку во время компилирования.</li>
61
<li>Turn_on может быть вызван внутри класса. Попытка обратиться к нему напрямую через<a>main</a>повлечет за собой ошибку во время компилирования.</li>
62
<li>Для родительского класса Device метод turn_on выступает в качестве публичного. Он может быть вызван из main.</li>
62
<li>Для родительского класса Device метод turn_on выступает в качестве публичного. Он может быть вызван из main.</li>
63
</ol><p>Все это наглядно объясняет типы наследования в C++.</p>
63
</ol><p>Все это наглядно объясняет типы наследования в C++.</p>
64
<h3>Конструкторы и деструкторы</h3>
64
<h3>Конструкторы и деструкторы</h3>
65
<p>Конструкторы и<a>деструкторы</a>в C++ не проходят стадию наследования. Они могут быть вызваны, если дочерний класс будет инициализировать свой объект. Конструкторы будут вызываться иерархическим способом один за другим. Начало - базовый класс, конец - последний производный.</p>
65
<p>Конструкторы и<a>деструкторы</a>в C++ не проходят стадию наследования. Они могут быть вызваны, если дочерний класс будет инициализировать свой объект. Конструкторы будут вызываться иерархическим способом один за другим. Начало - базовый класс, конец - последний производный.</p>
66
<p>Деструкторы тоже могут быть вызваны при инициализации классом имеющегося объекта. Соответствующий процесс в данном случае осуществляется в обратном порядке по сравнению с конструкторами.</p>
66
<p>Деструкторы тоже могут быть вызваны при инициализации классом имеющегося объекта. Соответствующий процесс в данном случае осуществляется в обратном порядке по сравнению с конструкторами.</p>
67
#include <iostream> using namespace std; class Device { public: // constructor Device() { cout << "Device constructor called" << endl; } // destructor ~Device() { cout << "Device destructor called" << endl; } }; class Computer: public Device { public: Computer() { cout << "Computer constructor called" << endl; } ~Computer() { cout << "Computer destructor called" << endl; } }; class Laptop: public Computer { public: Laptop() { cout << "Laptop constructor called" << endl; } ~Laptop() { cout << "Laptop destructor called" << endl; } }; int main() { cout << "\tConstructors" << endl; Laptop Laptop_instance; cout << "\tDestructors" << endl; return 0; }<p>Это - пример кода, который поможет понять принцип вызова упомянутых компонентов. В виде конструкторов выступают: Device-Computer-Laptop, деструкторов: laptop-Computer-Device.</p>
67
#include <iostream> using namespace std; class Device { public: // constructor Device() { cout << "Device constructor called" << endl; } // destructor ~Device() { cout << "Device destructor called" << endl; } }; class Computer: public Device { public: Computer() { cout << "Computer constructor called" << endl; } ~Computer() { cout << "Computer destructor called" << endl; } }; class Laptop: public Computer { public: Laptop() { cout << "Laptop constructor called" << endl; } ~Laptop() { cout << "Laptop destructor called" << endl; } }; int main() { cout << "\tConstructors" << endl; Laptop Laptop_instance; cout << "\tDestructors" << endl; return 0; }<p>Это - пример кода, который поможет понять принцип вызова упомянутых компонентов. В виде конструкторов выступают: Device-Computer-Laptop, деструкторов: laptop-Computer-Device.</p>
68
<h3>Множественное наследование</h3>
68
<h3>Множественное наследование</h3>
69
<p>Рассматривая иерархию классов с, стоит обратить внимание на множественное наследование. Оно происходит тогда, когда подкласс имеет два или более суперкласса (ключевое слово super class).</p>
69
<p>Рассматривая иерархию классов с, стоит обратить внимание на множественное наследование. Оно происходит тогда, когда подкласс имеет два или более суперкласса (ключевое слово super class).</p>
70
<p>Выше - пример того, как выглядит в виде кодификации. Здесь класс Laptop будет одновременно выступать "наследником" Monitor и Computer.</p>
70
<p>Выше - пример того, как выглядит в виде кодификации. Здесь класс Laptop будет одновременно выступать "наследником" Monitor и Computer.</p>
71
<h3>Виртуальное наследование</h3>
71
<h3>Виртуальное наследование</h3>
72
<p>В C++ есть new понятие - это "виртуальное наследование". Оно:</p>
72
<p>В C++ есть new понятие - это "виртуальное наследование". Оно:</p>
73
<ol><li>Позволяет предотвратить появление множественных объектов базового класса в иерархии наследования.</li>
73
<ol><li>Позволяет предотвратить появление множественных объектов базового класса в иерархии наследования.</li>
74
<li>Конструктор базового класса Device - вызывается один раз.</li>
74
<li>Конструктор базового класса Device - вызывается один раз.</li>
75
<li>Обращение к turn_on без предопределения "родителя" в дочернем классе не вызовет ошибку при компиляции.</li>
75
<li>Обращение к turn_on без предопределения "родителя" в дочернем классе не вызовет ошибку при компиляции.</li>
76
</ol><p>Выше - наглядный пример виртуального "варианта". В классах Computer и Monitor такой подход не разрешает ромбовидное наследование, если "дочь" Laptop будет получать в качестве "наследодателя" класс Device не виртуально (class Laptop: public Computer, public Monitor, public Device {};).</p>
76
</ol><p>Выше - наглядный пример виртуального "варианта". В классах Computer и Monitor такой подход не разрешает ромбовидное наследование, если "дочь" Laptop будет получать в качестве "наследодателя" класс Device не виртуально (class Laptop: public Computer, public Monitor, public Device {};).</p>
77
<h2>Иерархия в Java</h2>
77
<h2>Иерархия в Java</h2>
78
-
<p>Наследование<a>в Java</a>- это более понятный вариант. Освоить его принципы проще, чем в случае с C++. This method носит название "расширение класса". Ключевые понятия и определения тут точно таки�� же, как и в случае с Си-семейством. Поэтому слово public не должно вызывать проблемы.</p>
78
+
<p>Наследование<a>в Java</a>- это более понятный вариант. Освоить его принципы проще, чем в случае с C++. This method носит название "расширение класса". Ключевые понятия и определения тут точно такие же, как и в случае с Си-семейством. Поэтому слово public не должно вызывать проблемы.</p>
79
<h3>Что унаследовано</h3>
79
<h3>Что унаследовано</h3>
80
<p>При рассмотрении темы требуется запомнить:</p>
80
<p>При рассмотрении темы требуется запомнить:</p>
81
<ol><li>Когда подкласс расширяет суперкласс в Джаве, он будет наследовать защищенные и открытые (public) поля и методы. Они станут частью оной, словно подкласс сам их объявил.</li>
81
<ol><li>Когда подкласс расширяет суперкласс в Джаве, он будет наследовать защищенные и открытые (public) поля и методы. Они станут частью оной, словно подкласс сам их объявил.</li>
82
<li>Защищенные и public поля можно вызывать и ссылаться на них, как на объявленные в их пределах методы.</li>
82
<li>Защищенные и public поля можно вызывать и ссылаться на них, как на объявленные в их пределах методы.</li>
83
<li>Поля и<a>методы с</a>модификаторами доступа по умолчанию (пакеты) бывают доступны для подклассов, если они расположены там же, где и superclass.</li>
83
<li>Поля и<a>методы с</a>модификаторами доступа по умолчанию (пакеты) бывают доступны для подклассов, если они расположены там же, где и superclass.</li>
84
<li>На частные поля и методы (не public) суперкласса нельзя непосредственно ссылаться. Для этого используются методы, доступные для подкласса.</li>
84
<li>На частные поля и методы (не public) суперкласса нельзя непосредственно ссылаться. Для этого используются методы, доступные для подкласса.</li>
85
</ol><p>Как и в C++, конструкторы не подлежат рассматриваемой процедуре. Они должны вызывать конструктор для подкласса в superclass.</p>
85
</ol><p>Как и в C++, конструкторы не подлежат рассматриваемой процедуре. Они должны вызывать конструктор для подкласса в superclass.</p>
86
<h3>Единичный "подход"</h3>
86
<h3>Единичный "подход"</h3>
87
<p>Наследование в Java может быть единичным. Это - самый распространенный вариант. Он дает возможность получать свойства только от одного superclass.</p>
87
<p>Наследование в Java может быть единичным. Это - самый распространенный вариант. Он дает возможность получать свойства только от одного superclass.</p>
88
<p>Множественный вариант создает некоторые проблемы в ЯП. Пример - когда суперклассы имеют методы с одними и теми же именами и параметрами. Из Джавы такой вариант исключен. Поэтому достаточно понять права доступа и общие (public) принципы изучаемой операции.</p>
88
<p>Множественный вариант создает некоторые проблемы в ЯП. Пример - когда суперклассы имеют методы с одними и теми же именами и параметрами. Из Джавы такой вариант исключен. Поэтому достаточно понять права доступа и общие (public) принципы изучаемой операции.</p>
89
<h3>Как объявить</h3>
89
<h3>Как объявить</h3>
90
<p>Для того, чтобы воспользоваться приемом, когда уже ясно, что такое public, нужно использовать ключевик extends:</p>
90
<p>Для того, чтобы воспользоваться приемом, когда уже ясно, что такое public, нужно использовать ключевик extends:</p>
91
<p>Здесь:</p>
91
<p>Здесь:</p>
92
<ol><li>Car будет выступать "расширителем" Vehicle.</li>
92
<ol><li>Car будет выступать "расширителем" Vehicle.</li>
93
<li>Соответствующее явление приводит к тому, что защищенное<a>поле</a>(не public) licensePlate из Vehicle перейдет в Car.</li>
93
<li>Соответствующее явление приводит к тому, что защищенное<a>поле</a>(не public) licensePlate из Vehicle перейдет в Car.</li>
94
<li>После "получения свойств" от licensePlate, оно станет доступным внутри экземпляра Car.</li>
94
<li>После "получения свойств" от licensePlate, оно станет доступным внутри экземпляра Car.</li>
95
</ol><p>Можно сослаться на Car. Делается это так:</p>
95
</ol><p>Можно сослаться на Car. Делается это так:</p>
96
<p>Ссылка осуществляется внутри методы getLicensePlate. Обычно его помещают в класс Vehicle.</p>
96
<p>Ссылка осуществляется внутри методы getLicensePlate. Обычно его помещают в класс Vehicle.</p>
97
<h3>Приведение типов</h3>
97
<h3>Приведение типов</h3>
98
<p>Когда понятия public. Private, public static void и другие "базовые" для разработки поняты, можно переходить к более сложным моментам. В Джаве можно составлять на подкласс как на экземпляр одного из его суперклассов.</p>
98
<p>Когда понятия public. Private, public static void и другие "базовые" для разработки поняты, можно переходить к более сложным моментам. В Джаве можно составлять на подкласс как на экземпляр одного из его суперклассов.</p>
99
<p>Сначала здесь будет создан экземпляр авто, затем он присваивается переменной типа Vehicle. Далее ссылка будет указывать на соответствующий экземпляр.</p>
99
<p>Сначала здесь будет создан экземпляр авто, затем он присваивается переменной типа Vehicle. Далее ссылка будет указывать на соответствующий экземпляр.</p>
100
<p>Приведение типа - это процесс ссылки на объект класса как тип, отличный от самого class a. Объект "перебрасывается" из одного вида в другой.</p>
100
<p>Приведение типа - это процесс ссылки на объект класса как тип, отличный от самого class a. Объект "перебрасывается" из одного вида в другой.</p>
101
<h3>Upcasting и Downcasting</h3>
101
<h3>Upcasting и Downcasting</h3>
102
<p>При разработке можно привести объект подкласса к одному из его superclass. К этому моменту пользователь должен уже хорошо разбираться в правах доступа, включая public.</p>
102
<p>При разработке можно привести объект подкласса к одному из его superclass. К этому моменту пользователь должен уже хорошо разбираться в правах доступа, включая public.</p>
103
<p>Объект "наследника" может быть приведен к:</p>
103
<p>Объект "наследника" может быть приведен к:</p>
104
<ul><li>одному из его "родителей";</li>
104
<ul><li>одному из его "родителей";</li>
105
<li>из типа superclass к типу подкласса, если объект действительно выступает его экземпляром.</li>
105
<li>из типа superclass к типу подкласса, если объект действительно выступает его экземпляром.</li>
106
</ul><p>Приведенный пример downcasting будет действителен. А<a>здесь</a>можно посмотреть туториал по наследованию классов.</p>
106
</ul><p>Приведенный пример downcasting будет действителен. А<a>здесь</a>можно посмотреть туториал по наследованию классов.</p>
107
<h2>Как лучше понять процесс</h2>
107
<h2>Как лучше понять процесс</h2>
108
<p>Рассматривать соответствующую тему в "голой теории" - не лучшее решение. Понятия public и private можно изучить "только на бумаге". В случае с более сложными компонентами огромную роль играет практика. А еще - грамотно подобранный материал.</p>
108
<p>Рассматривать соответствующую тему в "голой теории" - не лучшее решение. Понятия public и private можно изучить "только на бумаге". В случае с более сложными компонентами огромную роль играет практика. А еще - грамотно подобранный материал.</p>
109
<p><a>Здесь</a>рассказывается о выбранном направлении в ООП в общих чертах. А<a>тут</a>- основы для C++.</p>
109
<p><a>Здесь</a>рассказывается о выбранном направлении в ООП в общих чертах. А<a>тут</a>- основы для C++.</p>
110
<p>Необходимые знания можно получить при помощи самообразования, а также обучаясь в техникуме или ВУЗе на направлении "программирование". Там рассказывают о наследовании в Java и других ЯП, разбирая процесс "с нуля".</p>
110
<p>Необходимые знания можно получить при помощи самообразования, а также обучаясь в техникуме или ВУЗе на направлении "программирование". Там рассказывают о наследовании в Java и других ЯП, разбирая процесс "с нуля".</p>
111
<p>Но лучшее решение - это дистанционные компьютерные курсы. Пользователи смогут заниматься тогда, когда им удобно. Программы рассчитаны как на новичков, так и на опытных разработчиков. Можно освоить одновременно несколько направлений в течении года. В конце выдается электронный сертификат, подтверждающий навыки и знания. С такими курсами<a>элементы кода</a>как static void main, superclass, public и другие будут понятны даже новичку.</p>
111
<p>Но лучшее решение - это дистанционные компьютерные курсы. Пользователи смогут заниматься тогда, когда им удобно. Программы рассчитаны как на новичков, так и на опытных разработчиков. Можно освоить одновременно несколько направлений в течении года. В конце выдается электронный сертификат, подтверждающий навыки и знания. С такими курсами<a>элементы кода</a>как static void main, superclass, public и другие будут понятны даже новичку.</p>
112
<a></a><a></a>
112
<a></a><a></a>