Наследование в C++: beginner, intermediate, advanced
В этой статье наследование описано на трех уровнях: beginner, intermediate и advanced. Expert нет. И ни слова про SOLID. Честно.
Beginner
Что такое наследование?
Наследование является одним из основополагающих принципов ООП. В соответствии с ним, класс может использовать переменные и методы другого класса как свои собственные.
Класс, который наследует данные, называется подклассом (subclass), производным классом (derived class) или дочерним классом (child). Класс, от которого наследуются данные или методы, называется суперклассом (super class), базовым классом (base class) или родительским классом (parent). Термины “родительский” и “дочерний” чрезвычайно полезны для понимания наследования. Как ребенок получает характеристики своих родителей, производный класс получает методы и переменные базового класса.
Наследование полезно, поскольку оно позволяет структурировать и повторно использовать код, что, в свою очередь, может значительно ускорить процесс разработки. Несмотря на это, наследование следует использовать с осторожностью, поскольку большинство изменений в суперклассе затронут все подклассы, что может привести к непредвиденным последствиям.
В этом примере, метод turn_on() и переменная serial_number не были объявлены или определены в подклассе Computer . Однако их можно использовать, поскольку они унаследованы от базового класса.
Важное примечание: приватные переменные и методы не могут быть унаследованы.
#include using namespace std; class Device < public: int serial_number = 12345678; void turn_on() < cout private: int pincode = 87654321; >; class Computer: public Device <>; int main() < Computer Computer_instance; Computer_instance.turn_on(); cout
Типы наследования
В C ++ есть несколько типов наследования:
- публичный ( public )- публичные ( public ) и защищенные ( protected ) данные наследуются без изменения уровня доступа к ним;
- защищенный ( protected ) — все унаследованные данные становятся защищенными;
- приватный ( private ) — все унаследованные данные становятся приватными.
Для базового класса Device , уровень доступа к данным не изменяется, но поскольку производный класс Computer наследует данные как приватные, данные становятся приватными для класса Computer .
#include using namespace std; class Device < public: int serial_number = 12345678; void turn_on() < cout >; class Computer: private Device < public: void say_hello() < turn_on(); cout >; int main() < Device Device_instance; Computer Computer_instance; coutКласс Computer теперь использует метод turn_on() как и любой приватный метод: turn_on() может быть вызван изнутри класса, но попытка вызвать его напрямую из main приведет к ошибке во время компиляции. Для базового класса Device , метод turn_on() остался публичным, и может быть вызван из main .
Конструкторы и деструкторы
В C ++ конструкторы и деструкторы не наследуются. Однако они вызываются, когда дочерний класс инициализирует свой объект. Конструкторы вызываются один за другим иерархически, начиная с базового класса и заканчивая последним производным классом. Деструкторы вызываются в обратном порядке.
Важное примечание: в этой статье не освещены виртуальные десктрукторы. Дополнительный материал на эту тему можно найти к примеру в этой статье на хабре.
#include using namespace std; class Device < public: // constructor Device() < cout // destructor ~Device() < cout >; class Computer: public Device < public: Computer() < cout ~Computer() < cout >; class Laptop: public Computer < public: Laptop() < cout ~Laptop() < cout >; int main()Конструкторы: Device -> Computer -> Laptop .
Деструкторы: Laptop -> Computer -> Device .Множественное наследование
Множественное наследование происходит, когда подкласс имеет два или более суперкласса. В этом примере, класс Laptop наследует и Monitor и Computer одновременно.
#include using namespace std; class Computer < public: void turn_on() < cout >; class Monitor < public: void show_image() < cout >; class Laptop: public Computer, public Monitor <>; int main()Проблематика множественного наследования
Множественное наследование требует тщательного проектирования, так как может привести к непредвиденным последствиям. Большинство таких последствий вызваны неоднозначностью в наследовании. В данном примере Laptop наследует метод turn_on() от обоих родителей и неясно какой метод должен быть вызван.
#include using namespace std; class Computer < private: void turn_on() < cout >; class Monitor < public: void turn_on() < cout >; class Laptop: public Computer, public Monitor <>; int main() < Laptop Laptop_instance; // Laptop_instance.turn_on(); // will cause compile time error return 0; >
Несмотря на то, что приватные данные не наследуются, разрешить неоднозначное наследование изменением уровня доступа к данным на приватный невозможно. При компиляции, сначала происходит поиск метода или переменной, а уже после — проверка уровня доступа к ним.
Intermediate
Проблема ромба
Проблема ромба (Diamond problem)- классическая проблема в языках, которые поддерживают возможность множественного наследования. Эта проблема возникает когда классы B и C наследуют A , а класс D наследует B и C .
К примеру, классы A , B и C определяют метод print_letter() . Если print_letter() будет вызываться классом D , неясно какой метод должен быть вызван — метод класса A , B или C . Разные языки по-разному подходят к решению ромбовидной проблем. В C ++ решение проблемы оставлено на усмотрение программиста.
Ромбовидная проблема — прежде всего проблема дизайна, и она должна быть предусмотрена на этапе проектирования. На этапе разработки ее можно разрешить следующим образом:
- вызвать метод конкретного суперкласса;
- обратиться к объекту подкласса как к объекту определенного суперкласса;
- переопределить проблематичный метод в последнем дочернем классе (в коде — turn_on() в подклассе Laptop ).
#include using namespace std; class Device < public: void turn_on() < cout >; class Computer: public Device <>; class Monitor: public Device <>; class Laptop: public Computer, public Monitor < /* public: void turn_on() < cout // uncommenting this function will resolve diamond problem */ >; int main() < Laptop Laptop_instance; // Laptop_instance.turn_on(); // will produce compile time error // if Laptop.turn_on function is commented out // calling method of specific superclass Laptop_instance.Monitor::turn_on(); // treating Laptop instance as Monitor instance via static cast static_cast( Laptop_instance ).turn_on(); return 0; >
Если метод turn_on() не был переопределен в Laptop, вызов Laptop_instance.turn_on() , приведет к ошибке при компиляции. Объект Laptop может получить доступ к двум определениям метода turn_on() одновременно: Device:Computer:Laptop.turn_on() и Device:Monitor:Laptop.turn_on() .
Проблема ромба: Конструкторы и деструкторы
Поскольку в С++ при инициализации объекта дочернего класса вызываются конструкторы всех родительских классов, возникает и другая проблема: конструктор базового класса Device будет вызван дважды.
#include using namespace std; class Device < public: Device() < cout >; class Computer: public Device < public: Computer() < cout >; class Monitor: public Device < public: Monitor() < cout >; class Laptop: public Computer, public Monitor <>; int main()
Виртуальное наследование
Виртуальное наследование (virtual inheritance) предотвращает появление множественных объектов базового класса в иерархии наследования. Таким образом, конструктор базового класса Device будет вызван только единожды, а обращение к методу turn_on() без его переопределения в дочернем классе не будет вызывать ошибку при компиляции.
#include using namespace std; class Device < public: Device() < cout void turn_on() < cout >; class Computer: virtual public Device < public: Computer() < cout >; class Monitor: virtual public Device < public: Monitor() < cout >; class Laptop: public Computer, public Monitor <>; int main()
Примечание: виртуальное наследование в классах Computer и Monitor не разрешит ромбовидное наследование если дочерний класс Laptop будет наследовать класс Device не виртуально ( class Laptop: public Computer, public Monitor, public Device <>; ).
Абстрактный класс
В С++, класс в котором существует хотя бы один чистый виртуальный метод (pure virtual) принято считать абстрактным. Если виртуальный метод не переопределен в дочернем классе, код не скомпилируется. Также, в С++ создать объект абстрактного класса невозможно — попытка тоже вызовет ошибку при компиляции.
#include using namespace std; class Device < public: void turn_on() < cout virtual void say_hello() = 0; >; class Laptop: public Device < public: void say_hello() < cout >; int main() < Laptop Laptop_instance; Laptop_instance.turn_on(); Laptop_instance.say_hello(); // Device Device_instance; // will cause compile time error return 0; >
Интерфейс
С++, в отличии от некоторых ООП языков, не предоставляет отдельного ключевого слова для обозначения интерфейса (interface). Тем не менее, реализация интерфейса возможна путем создания чистого абстрактного класса (pure abstract class) — класса в котором присутствуют только декларации методов. Такие классы также часто называют абстрактными базовыми классами (Abstract Base Class — ABC).
#include using namespace std; class Device < public: virtual void turn_on() = 0; >; class Laptop: public Device < public: void turn_on() < cout >; int main() < Laptop Laptop_instance; Laptop_instance.turn_on(); // Device Device_instance; // will cause compile time error return 0; >
Advanced
Несмотря на то, что наследование — фундаментальный принцип ООП, его стоит использовать с осторожностью. Важно думать о том, что любой код который будет использоваться скорее всего будет изменен и может быть использован неочевидным для разработчика путем.
Наследование от реализованного или частично реализованного класса
Если наследование происходит не от интерфейса (чистого абстрактного класса в контексте С++), а от класса в котором присутствуют какие-либо реализации, стоит учитывать то, что класс наследник связан с родительским классом наиболее тесной из возможных связью. Большинство изменений в классе родителя могут затронуть наследника что может привести к непредвиденному поведению. Такие изменения в поведении наследника не всегда очевидны — ошибка может возникнуть в уже оттестированом и рабочем коде. Данная ситуация усугубляется наличием сложной иерархии классов. Всегда стоит помнить о том, что код может изменяться не только человеком который его написал, и пути наследования очевидные для автора могут быть не учтены его коллегами.
В противовес этому стоит заметить что наследование от частично реализованных классов имеет неоспоримое преимущество. Библиотеки и фреймворки зачастую работают следующим образом: они предоставляют пользователю абстрактный класс с несколькими виртуальными и множеством реализованных методов. Таким образом, наибольшее количество работы уже проделано — сложная логика уже написана, а пользователю остается только кастомизировать готовое решение под свои нужды.
Интерфейс
Наследование от интерфейса (чистого абстрактного класса) преподносит наследование как возможность структурирования кода и защиту пользователя. Так как интерфейс описывает какую работу будет выполнять класс-реализация, но не описывает как именно, любой пользователь интерфейса огражден от изменений в классе который реализует этот интерфейс.
Интерфейс: Пример использования
Прежде всего стоит заметить, что пример тесно связан с понятием полиморфизма, но будет рассмотрен в контексте наследования от чистого абстрактного класса.
Приложение выполняющее абстрактную бизнес логику должно настраиваться из отдельного конфигурационного файла. На раннем этапе разработки, форматирование данного конфигурационного файла до конца сформировано не было. Вынесение парсинга файла за интерфейс предоставляет несколько преимуществ.
Отсутствие однозначности касательно форматирования конфигурационного файла не тормозит процесс разработки основной программы. Два разработчика могут работать параллельно — один над бизнес логикой, а другой над парсером. Поскольку они взаимодействуют через этот интерфейс, каждый из них может работать независимо. Данный подход облегчает покрытие кода юнит тестами, так как необходимые тесты могут быть написаны с использованием мока (mock) для этого интерфейса.
Также, при изменении формата конфигурационного файла, бизнес логика приложения не затрагивается. Единственное чего требует полный переход от одного форматирования к другому — написания новой реализации уже существующего абстрактного класса (класса-парсера). В дальнейшем, возврат к изначальному формату файла требует минимальной работы — подмены одного уже существующего парсера другим.
Заключение
Наследование предоставляет множество преимуществ, но должно быть тщательно спроектировано во избежание проблем, возможность для которых оно открывает. В контексте наследования, С++ предоставляет широкий спектр инструментов который открывает массу возможностей для программиста.
Как работать с наследованием в Python
Изучите основы наследования в Python, создавая гибкие и масштабируемые программы, с примерами и полезными функциями.
Алексей Кодов
Автор статьи
10 июля 2023 в 17:48
Наследование — одна из основных концепций объектно-ориентированного программирования, которая позволяет создавать новые классы на основе существующих, переиспользуя их свойства и методы. В Python наследование реализуется довольно просто и интуитивно. В этой статье мы разберем основы наследования в Python на примерах.
Базовые понятия наследования
Основная идея наследования заключается в том, что один класс (потомок) может наследовать атрибуты и методы другого класса (родителя). Это позволяет избежать дублирования кода и упрощает изменения и обновления.
Создание класса-родителя
Сначала создадим базовый класс Animal , который будет содержать общие атрибуты и методы для всех животных.
class Animal: def __init__(self, name, age): self.name = name self.age = age def speak(self): print(f" makes a sound.")
Создание класса-потомка
Теперь создадим класс Dog , который будет наследовать свойства и методы класса Animal . Для этого в скобках после имени класса указываем имя родительского класса.
class Dog(Animal): def speak(self): print(f" barks.")
Теперь класс Dog имеет доступ ко всем атрибутам и методам класса Animal . Мы также можем переопределить метод speak() для класса Dog , чтобы он выдавал другой результат.
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT
Множественное наследование
Python поддерживает множественное наследование, то есть один класс может наследовать свойства и методы сразу от нескольких классов-родителей. Для этого достаточно указать их имена через запятую в скобках после имени класса-потомка.
class A: def method_a(self): print("Method A") class B: def method_b(self): print("Method B") class C(A, B): pass c = C() c.method_a() c.method_b()
В этом примере класс C наследует методы method_a() и method_b() от классов A и B соответственно.
Важные функции и атрибуты
В контексте наследования в Python есть несколько важных функций и атрибутов, которые могут пригодиться:
- isinstance(obj, class) — проверяет, является ли объект экземпляром указанного класса или его потомка;
- issubclass(class1, class2) — проверяет, является ли class1 подклассом class2 ;
- super() — позволяет вызывать методы родительского класса из класса-потомка.
Заключение
Наследование в Python — мощный инструмент, который позволяет создавать гибкие и масштабируемые программы. Эта статья рассмотрела основы наследования, но возможностей языка гораздо больше. Рекомендуем продолжить изучение Python, чтобы овладеть всеми его возможностями!
Если вы хотите углубить свои знания в Python-разработке, обратите внимание на следующую онлайн-школу:
Объектно-ориентированное программирование
Наследование (inheritance) является одним из ключевых моментов ООП. Благодаря наследованию один класс может унаследовать функциональность другого класса.
Пусть у нас есть следующий класс Person, который описывает отдельного человека:
class Person < private string _name = ""; public string Name < get < return _name; >set < _name = value; >> public void Print() < Console.WriteLine(Name); >>
Но вдруг нам потребовался класс, описывающий сотрудника предприятия - класс Employee. Поскольку этот класс будет реализовывать тот же функционал, что и класс Person, так как сотрудник - это также и человек, то было бы рационально сделать класс Employee производным (или наследником, или подклассом) от класса Person, который, в свою очередь, называется базовым классом или родителем (или суперклассом):
class Employee : Person
После двоеточия мы указываем базовый класс для данного класса. Для класса Employee базовым является Person, и поэтому класс Employee наследует все те же свойства, методы, поля, которые есть в классе Person. Единственное, что не передается при наследовании, это конструкторы базового класса с параметрами.
Таким образом, наследование реализует отношение is-a (является), объект класса Employee также является объектом класса Person:
Person person = new Person < Name = "Tom" >; person.Print(); // Tom person = new Employee < Name = "Sam" >; person.Print(); // Sam
И поскольку объект Employee является также и объектом Person, то мы можем так определить переменную: Person p = new Employee() .
По умолчанию все классы наследуются от базового класса Object , даже если мы явным образом не устанавливаем наследование. Поэтому выше определенные классы Person и Employee кроме своих собственных методов, также будут иметь и методы класса Object: ToString(), Equals(), GetHashCode() и GetType().
Все классы по умолчанию могут наследоваться. Однако здесь есть ряд ограничений:
- Не поддерживается множественное наследование, класс может наследоваться только от одного класса.
- При создании производного класса надо учитывать тип доступа к базовому классу - тип доступа к производному классу должен быть таким же, как и у базового класса, или более строгим. То есть, если базовый класс у нас имеет тип доступа internal , то производный класс может иметь тип доступа internal или private , но не public . Однако следует также учитывать, что если базовый и производный класс находятся в разных сборках (проектах), то в этом случае производый класс может наследовать только от класса, который имеет модификатор public.
- Если класс объявлен с модификатором sealed , то от этого класса нельзя наследовать и создавать производные классы. Например, следующий класс не допускает создание наследников:
sealed class Admin
Доступ к членам базового класса из класса-наследника
Вернемся к нашим классам Person и Employee. Хотя Employee наследует весь функционал от класса Person, посмотрим, что будет в следующем случае:
class Employee : Person < public void PrintName() < Console.WriteLine(_name); >>
Этот код не сработает и выдаст ошибку, так как переменная _name объявлена с модификатором private и поэтому к ней доступ имеет только класс Person . Но зато в классе Person определено общедоступное свойство Name, которое мы можем использовать, поэтому следующий код у нас будет работать нормально:
class Employee : Person < public void PrintName() < Console.WriteLine(Name); >>
Таким образом, производный класс может иметь доступ только к тем членам базового класса, которые определены с модификаторами private protected (если базовый и производный класс находятся в одной сборке), public , internal (если базовый и производный класс находятся в одной сборке), protected и protected internal .
Ключевое слово base
Теперь добавим в наши классы конструкторы:
class Person < public string Name < get; set;>public Person(string name) < Name = name; >public void Print() < Console.WriteLine(Name); >> class Employee : Person < public string Company < get; set; >public Employee(string name, string company) : base(name) < Company = company; >>
Класс Person имеет конструктор, который устанавливает свойство Name. Поскольку класс Employee наследует и устанавливает то же свойство Name, то логично было бы не писать по сто раз код установки, а как-то вызвать соответствующий код класса Person. К тому же свойств, которые надо установить в конструкторе базового класса, и параметров может быть гораздо больше.
С помощью ключевого слова base мы можем обратиться к базовому классу. В нашем случае в конструкторе класса Employee нам надо установить имя и компанию. Но имя мы передаем на установку в конструктор базового класса, то есть в конструктор класса Person, с помощью выражения base(name) .
Person person = new Person("Bob"); person.Print(); // Bob Employee employee = new Employee("Tom", "Microsoft"); employee.Print(); // Tom
Конструкторы в производных классах
Конструкторы не передаются производному классу при наследовании. И если в базовом классе не определен конструктор по умолчанию без параметров, а только конструкторы с параметрами (как в случае с базовым классом Person), то в производном классе мы обязательно должны вызвать один из этих конструкторов через ключевое слово base. Например, из класса Employee уберем определение конструктора:
class Employee : Person < public string Company < get; set; >= ""; >
В данном случае мы получим ошибку, так как класс Employee не соответствует классу Person, а именно не вызывает конструктор базового класса. Даже если бы мы добавили какой-нибудь конструктор, который бы устанавливал все те же свойства, то мы все равно бы получили ошибку:
class Employee : Person < public string Company < get; set; >= ""; public Employee(string name, string company) // ! Ошибка < Name = name; Company = company; >>
То есть в классе Employee через ключевое слово base надо явным образом вызвать конструктор класса Person:
class Employee : Person < public string Company < get; set; >= ""; public Employee(string name, string company) : base(name) < Company = company; >>
Либо в качестве альтернативы мы могли бы определить в базовом классе конструктор без параметров:
class Person < public string Name < get; set; >// конструктор без параметров public Person() < Name = "Tom"; Console.WriteLine("Вызов конструктора без параметров"); >public Person(string name) < Name = name; >public void Print() < Console.WriteLine(Name); >>
Тогда в любом конструкторе производного класса, где нет обращения конструктору базового класса, все равно неявно вызывался бы этот конструктор по умолчанию. Например, следующий конструктор
public Employee(string company)
Фактически был бы эквивалентен следующему конструктору:
public Employee(string company) :base()
Порядок вызова конструкторов
При вызове конструктора класса сначала отрабатывают конструкторы базовых классов и только затем конструкторы производных. Например, возьмем следующие классы:
class Person < string name; int age; public Person(string name) < this.name = name; Console.WriteLine("Person(string name)"); >public Person(string name, int age) : this(name) < this.age = age; Console.WriteLine("Person(string name, int age)"); >> class Employee : Person < string company; public Employee(string name, int age, string company) : base(name, age) < this.company = company; Console.WriteLine("Employee(string name, int age, string company)"); >>
При создании объекта Employee:
Employee tom = new Employee("Tom", 22, "Microsoft");
Мы получим следующий консольный вывод:
Person(string name) Person(string name, int age) Employee(string name, int age, string company)
В итоге мы получаем следующую цепь выполнений.
- Вначале вызывается конструктор Employee(string name, int age, string company) . Он делегирует выполнение конструктору Person(string name, int age)
- Вызывается конструктор Person(string name, int age) , который сам пока не выполняется и передает выполнение конструктору Person(string name)
- Вызывается конструктор Person(string name) , который передает выполнение конструктору класса System.Object, так как это базовый по умолчанию класс для Person.
- Выполняется конструктор System.Object.Object() , затем выполнение возвращается конструктору Person(string name)
- Выполняется тело конструктора Person(string name) , затем выполнение возвращается конструктору Person(string name, int age)
- Выполняется тело конструктора Person(string name, int age) , затем выполнение возвращается конструктору Employee(string name, int age, string company)
- Выполняется тело конструктора Employee(string name, int age, string company) . В итоге создается объект Employee
В чем основная задача такой функции как наследование
Преподаватель кафедры гражданского права (филиал, г. Брянск) Современная гуманитарная академия 109029, г. Москва, ул. Нижегородская, 32 E-mail: Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
В статье содержится системный анализ правовой сущности принципов наследственного права в целом. Обоснована необходимость некоторой доработки норм, которые прямо или косвенно касаются внутриотраслевых принципов наследственного права, отраженных в части третьей ГК РФ. В юридической литературе вопрос о принципах наследственного права рассматривается по-разному, существуют различные подходы к их определению. Указанные принципы базируются на фундаментальных отраслевых принципах гражданского права.
Ключевые слова: универсальное правопреемство; принцип свободы завещания; гражданская правоспособность
Под принципами права в теории права понимаются основополагающие идеи, закрепленные в законе. «Значение принципов в процессе правового регулирования общественных отношений невозможно переоценить. Качество законов и эффективность правового регулирования во многом зависят от того, как в них сформулированы и раскрыты принципы» [12, с. 20]. Кроме того, они имеют также выраженное регулятивное значение, которое проявляется в том, что в случае пробелов в праве, несогласованности правовых норм или затруднений в применении правоприменительный орган должен руководствоваться правовыми принципами.
Принципы не только определяют уровень правового регулирования тех или иных общественных отношений, но и указывают на дальнейшее развитие законодательства. Принципы права являются основополагающими, концептуальными идеями и подходами к правовому регулированию соответствующих общественных отношений.
Будучи сформулированными юридической наукой, они находят свое воплощение в соответствующих нормативно-правовых актах и правоприменительной деятельности, а в случае пробелов – подлежат непосредственному применению в качестве аналогии права либо доктринальных положений, каковые в ряде случаев также признаются источниками права.
Под принципами наследственного права понимаются «… объективно обусловленные, закрепленные в правовых нормах важнейшие положения, имеющие стабильный характер, которые обусловливают сущность и особенности регулирования наследования, содействуют совершенствованию регламентации поведения субъектов наследственного права и направляют правоприменительную деятельность» [23, с. 15].
На сегодняшний день существует достаточно много подходов к определению принципов наследственного права. Например, П.С. Никитюк наряду с общими принципами (демократизм, материальная заинтересованность) называет следующие: непосредственную связь и зависимость наследования от допускаемых видов индивидуальной собственности граждан; семейно-родственный характер наследования; материально-обеспеченное назначение наследования [12, с. 12]. А.М. Немков определяет следующие принципы наследственного права:
- использование наследственного имущества для обеспечения нетрудоспособных родственников и супруга умершего;
- признания права наследования по закону за наиболее близкими наследодателю лицами;
- признание права наследования по закону на предметы домашней обстановки и обихода за наследниками, имевшими хозяйственно-трудовую деятельность с этим имуществом;
- принцип свободы завещания;
- принцип полного равенства супругов;
- принцип равенства наследственных долей при наследовании по закону [11, с. 109].
П.С. Никитюк был категорически не согласен с данным подходом, свои возражения он основывал на том, что первые два принципа являются интерпретацией норм советского наследственного права, правило о равенстве супругов представляет собой «… одну из норм социалистического права, а не правовой принцип как правовую идею, непосредственно определяющую характер и организацию правового регулирования по наследованию». По мнению П.С. Никитюка не следует и свободу завещания называть принципом, поскольку «нормы наследственного права ограничивают возможности произвольного распоряжения имуществом» [12, с. 12].
П.С. Гришаев считает, что наследственное право базируется на сочетании двух основополагающих принципах свободы наследования и охраны семьи обязательных наследников. Первый принцип складывается из возможности собственника по своему выбору распорядиться принадлежащим ему имуществом. В качестве дополнительных принципов С.П. Гришаев называет универсальность наследственного правопреемства и охрану наследства от противоправных посягательств [3, с. 9?10].
Более всего отвечают требованиям закона принципы наследственного права, выделенные Ю.К. Толстым, воспринятые и одобренные правоведами, практикующими юристами и комментаторами законодательства: универсальности наследственного правопреемства; свободы завещания; обеспечения прав и интересов необходимых наследников; учета воли наследодателя; свободы выбора наследников; охраны основ правопорядка и нравственности [22, с. 105].
Остается спорным вопрос, что понимать под наследственным правом – подотрасль или один из институтов гражданского права. В теории права под «подотраслью права» понимается «обособленная часть отрасли права, объединяющая нормы и институты, выделяемые потому, что ими регулируются специальные виды однородных по содержанию общественных отношений в той области, которая составляет предмет регулирования основной отрасли права» [19, с. 123]. Р.Э. Товмасян отмечает что, подотрасль объединяет нормы нескольких институтов, регулирующих отдельные относительно обособленные общественные отношения, возникающие в процессе осуществления гражданских прав и не образует самостоятельной отрасли права [7].
Наряду с отраслевыми институтами существуют и так называемые межотраслевые (комплексные) институты, состоящие из норм различных отраслей права, но регулирующие взаимосвязанные родственные отношения. Как отмечает А.С. Пиголкин, в последние годы повышается значение в общей системе права ряда межотраслевых институтов, в первую очередь тех, которые регулируют хозяйственные отношения. Это обусловливает возможность их перерастания в будущем в самостоятельные отрасли права (например, морское, транспортное, авторское право и др.) [20, с. 67].
Для того чтобы определенная совокупность правовых норм могла образовать подотрасль, ей необходимо обладать рядом качеств. Она должна регулировать особую область однородных отношений. В силу этого составляющие ее нормы должны иметь специфику, выделяющую их из общей массы норм данной отрасли права и одновременно придающую им определенное внутреннее единство. М.И. Пискотин полагает что, такая совокупность норм составляет цельную и обособленную систему, которая является главным подразделением соответствующей отрасли права. Она не выделяется в самостоятельную отрасль, так как имеет больше общего, чем специфического, по сравнению с другими нормами включающей ее отрасли права, и у государства пока нет политической заинтересованности в ее самостоятельном и обособленном развитии [13, с. 50].
Наследственное право традиционно занимает в системе гражданского права особое место в силу следующих обстоятельств. По наследству переходят все права и обязанности наследодателя, кроме тех, переход которых по наследству либо не допускается законом, либо невозможен в силу самого существа этих прав и обязанностей. Состав наследства не ограничивается принадлежавшими наследодателю вещными правами, в него входят обязательственные права наследодателя, его долги, а также некоторые из личных неимущественных прав. Отношения по наследованию охватывают самые различные по своей природе отношения, которые не сводятся лишь к имущественным, а тем более к вещным правоотношениям. Поэтому нельзя согласиться с коллективом кафедры гражданского права МГУ, который в двух последних изданиях учебника по гражданскому праву отвел наследственному праву место (в первом томе учебника) в разделе «Право собственности и иные вещные права» после права собственности граждан в первом издании учебника и после права частной собственности – во втором. Разве по наследству переходит только собственность граждан, какое бы широкое содержание в это понятие ни вкладывать, задается вопросом А.П. Сергеев [2, с. 521].
Как справедливо отмечает А.С. Пиголкин, «существование комплексных отраслей связано с тем, что регулируемые правом общественные отношения можно делить по разным основаниям» [20, с. 100]. Едва ли при определении места наследственного права в системе гражданского права опорой может служить ст. 35 Конституции РФ, которая ограничивается указанием на то, что право наследования гарантируется. По мнение Ю.К. Толстого, представляется оптимальным, чтобы раздел «Наследственное право» в системе гражданского права был завершающим [2, с. 518]. Вслед за ним может быть помещен лишь раздел, относящийся к международному частному праву. Именно по такому пути идет гражданское законодательство.
В определенном смысле наследственное право является «синтезом» гражданского права в целом, считает А.П. Сергеев [2, с. 32]. Наследственное право имеет свой особый предмет и метод правового регулирования. Предмет наследственного права – это регулируемый и охраняемый его нормами круг правовых отношений, которые опосредуют переход имущества умершего лица к его наследникам. Участниками регулируемых наследственным законодательством отношений являются граждане и юридические лица. Сложная внутренняя структурированность наследственного права обусловлена особенностями его предмета регулирования и объемной постоянно расширяющейся системой источников наследственного права.
В наследственном праве, как подотрасли гражданского права, используется метод универсального правопреемства на базе общеотраслевого метода юридического равенства сторон. Комплексность наследственного права как подотрасли права характеризуется тем, что нормы наследственного права носят комплексный характер, т.е. содержат и нормы других отраслей права, это сформировавшаяся подотрасль права, представляющая собой совокупность правовых норм, которыми устанавливается система и регулируются наследственные отношения. Таким образом, можно согласиться с позицией большинства ученых правоведов и отнести наследственное право к подотрасли гражданского права, которая представляет собой совокупность правовых норм, регулирующих общественные отношения по переходу имущества умершего к другим лицам в порядке универсального правопреемства [14, с. 5].
Особенности отдельных видов общественных отношений, входящих в предмет наследственного права, в свою очередь, предопределяют их внутреннюю структурную дифференциацию и обусловливают существование в рамках подотрасли соответствующих правовых институтов. Так, наследственное право, как подотрасль гражданского права, состоит из институтов: наследование по завещанию, наследование по закону и др. Такое мнение, в частности, высказал В.Ф. Яковлев, что также свидетельствует в пользу определения наследственного права, как подотрасли гражданского права [26, с. 8]. Ускорившиеся в России темпы социально-экономических и политических преобразований требуют адекватного реагирования и в части соответствующих обновлений правовой системы страны в целом. Следует заметить, что система права – не результат произвольного усмотрения законодателя, а своего рода слепок с реальной действительности.
Однако объективная природа системы права, как справедливо отмечает Н.И. Матузов, не означает, что законодатель не может на нее повлиять. Он может вносить в систему права известные коррективы, изменения (например, выделить, осознав потребность в этом, ту или иную отрасль права или, наоборот, объединив их, установить тот или иной институт, принять те или иные нормы, акты и т.д.) [10, с. 145]. В качестве средств, с помощью которых можно решить проблему совершенствования законодательства, должны быть использованы систематизация законодательства, которая позволит минимизировать юридические коллизии в данной области. Эффективность системы права достигается тогда, когда она отражает потребности общественного развития и четко обеспечивает правовое регулирование.
В доктрине гражданского права можно встретить аргументы как в пользу отнесения наследственного права к подотрасли гражданского права, так и доказательства обратного. Проведенное исследование позволяет выделить основные критерии подотрасли наследственного права, в соответствии с которыми подотрасль гражданского права в отличие от института гражданского права должна обладать следующими особенностями:
– подотрасль права от института права отличается масштабом охватываемых правовым регулированием общественных отношений;
– объединяет нормы нескольких институтов, регулирующих отдельные относительно обособленные общественные отношения, возникающие в процессе осуществления гражданских прав (например, институт наследования по завещанию, институт наследования по закону и др.);
– нормы подотрасли права должны иметь специфику, выделяющую их из общей массы норм данной отрасли права и одновременно придающую им определенное внутреннее единство;
– обладать комплексностью, нормы наследственного права носят комплексный характер, т.е. содержат и нормы других отраслей права;
– кроме источников правового регулирования подотрасль права должна иметь свои принципы как основополагающие начала;
– использовать свой метод, в данном случае, универсального правопреемства на базе общеотраслевого метода юридического равенства сторон;
– выполнять определенные функции.
Таким образом, признание существования предмета, методов, задач, принципов, системы и источников правового регулирования в наследственном праве, масштаб охватываемых правовым регулированием общественных отношений в данной области позволяет считать наследственное право подотраслью гражданского права.
Наследственному праву, как подотрасли гражданского права, должны быть присущи только ему свойственные принципы. Собственное значение подотраслевых принципов состоит в том, что они в дополнение к отраслевым гражданско-правовым принципам выражают особенности той или иной подотрасли. Будучи выявленными и изученными, принципы наследственного права способствуют устранению проблем и архаизмов в нормах законодательства о наследовании, определению направления развития и совершенствования наследственного права [17, с. 123]. Более того, наличие таких принципов служит своего рода лакмусовой бумажкой, позволяющей утверждать, есть ли достаточные основания для вычленения данной совокупности правовых норм в качестве относительно самостоятельного подразделения отрасли гражданского права или их нет [2, с. 532].
Если такие принципы есть, то налицо самостоятельное подразделение отрасли права. Если их нет, то совокупность норм наследования не может претендовать на обособленное место, нормы наследственного права могут быть раскассированы по иным структурным подразделениям соответствующей отрасли права и законодательства. Чтобы этого не случилось, в условиях происходящего обновления отечественного наследственного права, когда вновь принятое законодательство еще не имеет устоявшейся практики применения, внутриотраслевые принципы должны быть вычленены из конкретной правовой материи, четко сформулированы, законно обоснованы и изложены отдельной главой в третьей части ГК РФ. Таким образом, принципы станут своеобразными ориентирами и окажут помощь судебным и нотариальным органам в правильном толковании и применении законов. В части третьей ГК РФ отдельной главой должны быть отражены следующие принципы наследственного права: принцип универсальности наследственного правопреемства – ст. 1110 ГК РФ; принцип свободы завещания – ст. 1119 ГК РФ; принцип учета воли наследодателя (действительной и предполагаемой), выражается в определении круга наследников по закону – ст. 1141 ГК РФ; принцип обеспечения прав и свобод необходимых наследников – ст. 1149 ГК РФ; принцип свободы выбора у наследников, призванных к наследованию – ст. 1157 ГК РФ; принцип охраны основ правопорядка и нравственности, интересов наследодателя, наследников, иных физических и юридических лиц в отношениях по наследованию – ст. 1171 ГК РФ; принцип охраны наследства от противоправных посягательств – ст. 1172 ГК РФ. Разумеется, изложенный перечень не является исчерпывающим. Исчерпывающий перечень принципов, по всей вероятности, составить нельзя по определению: поскольку принципы есть основополагающие идеи отрасли права, то закрытого ряда «идей» вообще быть не может.
Большинство российских цивилистов считают, что в российском законодательстве, как и в законодательстве большинства стран континентальной Европы, наследование определено как универсальное правопреемство. Принцип универсальности наследственного правопреемства заключается в том, что «между волей наследодателя и волей наследника отсутствуют посредники, наследник замещает наследодателя во всех правоотношениях, в которых участвовал наследодатель, и акт принятия наследства распространяется на всю наследственную массу, даже на ту часть наследства, о которой наследник не знает» [4, с.75]. При наследовании исключена возможность сингулярного правопреемства (нельзя, например, принять по наследству лишь имущество, отказываясь от обязанностей, связанных с этим имуществом). Это прямо противоречило бы правилам ст. 1152 ГК РФ о том, что не допускается принятие наследства с оговорками и под условием). Наследник либо принимает наследство сразу и целиком, без оговорок, условий, либо отказывается от него.
В новом законодательстве представлены иная, чем прежде, трактовка понятия универсальности в наследственном правопреемстве и соответственно иная сфера действия этого требования. В.А. Елизаров и О.Н. Садиков считают, что новый ГК РФ базируется на принципе универсального правопреемства и отмечают, что случаи сингулярного преемства могут наблюдаться как исключение при реорганизации [8, с. 96]. Ранее требование универсальности распространялось на все наследство, независимо от оснований наследования отдельных его частей, сейчас из этого общего правила ГК РФ устанавливает ряд изъятий.
Так, в соответствии с п. 3 ст. 1158 ГК РФ, если наследник призывается к наследованию одновременно по нескольким основаниям, он вправе отказаться от части наследства, причитающейся ему по одному из этих оснований, по нескольким или по всем. Обращает на себя внимание изложение п. 3 ст. 1158 ГК РФ: «…если наследник призывается к наследованию одновременно по нескольким основанием (по завещанию и по закону или в порядке наследственной трансмиссии и в результате открытия наследства и тому подобное), он вправе отказаться от наследства, причитающегося ему по одному из этих оснований, по нескольким из них или по всем основаниям». Возникает вопрос, что имел в виду законодатель, называя открытие наследства одним из оснований для призвания к наследству. Закон называет основаниями наследования либо завещание, либо наследование по закону, а открытие наследства - момент, время, когда возникает возможность воспользоваться одним из этих оснований.
Для разрешения созданной ситуации неопределенности п. 3 ст.1158 ГК РФ следует изложить в следующей редакции: «…Однако, если наследник призывается наследованию одновременно по нескольким основанием (по завещанию и по закону, а также в порядке наследственной трансмиссии, по праву представления и тому подобное), он вправе отказаться от наследства, причитающегося ему по одному из этих оснований, по нескольким из них или по всем основаниям».
М.В. Телюкина обратила внимание еще на один вопрос, на который нормы ГК РФ не дают ответа: считаются ли различные завещания, различными основаниями наследования? От решения этого вопроса будет зависеть, сможет ли наследник принять имущество по одному завещанию и отказаться от принятия имущества по другому [18, с. 118].
К лицам, совместно наследующим по закону и по завещанию, в конечном итоге переходит все наследство. Переходит оно при этом непосредственно от наследодателя к наследникам и опосредуется единым актом – посредством принятия наследства. Но то обстоятельство, что одна часть наследства переходит по закону, а другая часть – по завещанию, не делает сам переход прав и обязанностей умершего к наследникам частичным, ибо сохраняется главное свойство универсальности правопреемства, заключающееся в том, что предметом перехода остается вся совокупность прав и обязанностей предшественника. Ни одно право или обязанность, входящие в состав наследственного имущества, не остаются бессубъектными.
Однако далеко не все юристы признают проведение принципа универсального правопреемства в наследственном праве РФ. П.С. Никитюк считает, что наследственное право РФ вовсе не следует идее универсального преемства. Он указывает на наличие в российском наследственном праве сингулярного и опосредованного преемства отказополучателя (легатария), признавая, что наследственное право регулирует порядок и пределы перехода прав и обязанностей умершего к его наследникам и другие связанные с этим отношения, а также на разобщенность отдельных частей наследства [12, с. 34]. По мнению А.А. Рубанова, о расщепленности наследства на отдельные части свидетельствует и возможность подчинения разных частей наследства законодательствам различных государств, при наследовании с иностранным элементом [15, с. 225]. На случаи частного «неуниверсального» преемства указывал также В.А. Рясенцев [16, с. 5]. Тем не менее принцип универсального правопреемства закреплен в ст. 1110 ГК РФ.
В принципе свободы завещания осуществляются общие принципы гражданского права – дозволительной направленности и диспозитивности. По мнению авторитетных ученых-правоведов, история становления и развития принципа свободы завещания свидетельствует о том, что устанавливаемые законом пределы сводили на нет его существование [17, с. 170]. В новом законодательстве не только провозглашен принцип свободы завещания, но и раскрыто его содержание.
Принцип свободы завещания означает, что «завещатель вправе по своему усмотрению завещать имущество любым лицам, любым образом определить доли наследников в наследстве, лишить наследства одного, нескольких или всех наследников по закону, не указывая причин такого лишения», а также включить в завещание иные распоряжения, предусмотренные правилами Кодекса о наследовании, отменить или изменить совершенное завещание ст. 1119 ГК РФ. Свобода завещания проявляется также и в том, что в соответствии со ст. 1120 ГК РФ завещатель вправе совершить завещание, содержащее распоряжение о любом имуществе, в том числе о том, которое он может приобрести в будущем. Прежний закон о подобной возможности умалчивал.
Расширению принципа свободы завещания, несомненно, будет способствовать появление новых форм завещания в Российской Федерации.
Завещатель не обязан сообщать кому-либо о содержании завещания (т.е. вправе составить закрытое завещание), об изменении завещания в определенной части или даже о его полной отмене.
«Завещатель не обязан указывать, лишая кого-то наследства, причины такого лишения» [5, с. 225]. Во всяком случае, отсутствие указаний на такие причины не является основанием признать завещание недействительным. Завещатель вправе включить в завещание положения об исполнении завещания душеприказчиком, о завещательном отказе, о завещательном возложении.
Принцип свободы завещания – это и тайна удостоверения завещания. Охраняется тайна как составления, так и содержания завещания. За разглашение тайны предусмотрена ответственность. Нарушение тайны завещания может иметь любую форму (например, сообщение по телефону содержания завещания заинтересованным лицам, демонстрация текста завещания по кабельному телевидению, передача по сетям Интернета).
Если тайна нарушена, завещатель вправе:
а) потребовать компенсации морального вреда (ст. 12 ГК РФ). При определении размера компенсации морального вреда должны учитываться требования разумности и справедливости;
б) воспользоваться другими способами защиты, предусмотренными в нормах ГК РФ, в частности потребовать пресечения действий по разглашению сведений, нарушающих тайну завещания, присуждения к исполнению в натуре, возмещения причиненных убытков.
Принцип обеспечения прав и свобод необходимых наследников ограничивает принцип свободы завещания, поскольку определенную категорию наследников – необходимых наследников – наследодатель не может лишить обязательной доли наследства.
Это ограничение направлено на защиту интересов субъектов, которые в силу возраста либо состояния здоровья не могут самостоятельно обеспечить себя в полном объеме средствами к существованию.
Тенденция свободы завещания проявляется и в уменьшении размера обязательной доли, а также в возможности уменьшения размера обязательной доли судом или даже отказа в ее присуждении. Такой подход законодателя представляется обоснованным. «Граждане, не имеющие права наследования, не призываются и к наследованию обязательной доли, поскольку наследование обязательной доли является наследованием по закону» [6, с. 28]. Предусмотренные законом условия, дающие право на обязательную долю, должны быть налицо ко дню открытия наследства.
«При определении размера обязательной доли принимаются во внимание все наследники по закону, которые были бы призваны к наследованию при отсутствии завещания» [1, с. 43]. При этом наследники по завещанию учитываться не должны.
«Но отдание должного обязательным наследникам – вовсе не единственное ограничение, которое накладывает закон на волю наследодателя. Закон требует в обязательном порядке, чтобы эта воля не имела порока, поэтому в юридической практике часто встречаются случаи, когда завещание оспаривается заинтересованными лицами по причине порока воли» [1, с. 43]. Это бывает, когда завещатель является при жизни или в судебном порядке признается лицом недееспособным.
Часто встречаются в судебной практике иски о признании завещания недействительным, когда основной довод истца состоит в том, что завещатель в момент составления завещания хотя и находился в дееспособном состоянии, но в силу преклонного возраста и связанных с ним необратимых изменений психики или по причине тяжелой болезни не мог руководить своими действиями и понимать их значение.
Если истцу удается доказать, что завещатель находился именно в таком состоянии, то совершенно очевидно, что такое завещание будет признано недействительным в порядке и по основаниям ст. 177 ГК РФ в связи с пороком воли завещателя [5, с. 142].
Еще одним основанием для признания завещания недействительным, кроме порока воли завещателя, признается порок формы самого завещания. Это несоблюдение требований государственной регистрации и нарушение нотариальной формы.
«Основанием для признания завещания недействительным являются также пороки содержания – если завещание противоречит нормам действующего законодательства» [5, с. 142].
Завещание, как односторонняя сделка, может быть признано ничтожной (абсолютно недействительной) либо оспоримой (относительно недействительной) сделкой. Ничтожная сделка является недействительной независимо от решения суда в силу факта ее совершения с момента ее совершения. Оспоримая сделка является недействительной с момента ее совершения в силу решения суда. Завещание может быть признано недействительным как полностью, так и в части. При этом, как верно отмечают О.В. Маннаников, К.Н. Ярошенко и другие, часть третья ГК РФ не предусматривает специальных последствий недействительности завещания [9, с. 56]. Вообще, вопрос о действительности завещания решен может быть только в судебном порядке.
«Принцип учета воли наследодателя (действительной и предполагаемой) выражается в определении круга наследников по закону в случаях, когда завещание не было оставлено или завещание является недействительным» [25, с. 26].
Круг наследников по закону определяется, таким образом, как если бы наследодатель сам его определял. В основе определения круга наследников и очередности их призвания к наследованию – наличие супружеских либо родственных отношений и степень родства. В первую очередь к наследованию призываются наиболее близкие наследодателю люди – супруг, дети и родители наследодателя.
Поскольку усыновленный и его потомство, с одной стороны, и усыновитель и его родственники – с другой приравниваются к родственникам по происхождению, они имеют право наследования аналогично кровным родственникам.
Новый Кодекс увеличил количество очередей наследников: если в первоначальной редакции ГК РСФСР 1964 года предусматривалось только две очереди, а после внесения в него изменений 14 мая 2001 года – четыре, то сейчас их восемь. Лишь при отсутствии наследников всех этих очередей наследственное имущество может перейти к государству как выморочное.
Одним из принципов наследственного права является очередность призвания наследников к наследованию.
Этот принцип означает, что наследники каждой последующей очереди наследуют, если нет наследников предшествующих очередей, т.е. если наследники предшествующих очередей отсутствуют, признаны недостойными наследниками и отстранены от наследования (ст. 1117 ГК РФ), лишены наследства (п. 1 ст. 1119 ГК РФ), не приняли наследства или отказались от него.
«Учет предполагаемой воли наследодателя проявляется также в правиле о приращении наследственных долей. Правило действует, когда наследодатель не указал в завещании наследника на случай, если основной наследник отпадет. Наследственная доля отпавшего наследника распределяется так, как если бы ею распорядился сам наследодатель» [21, с. 15].
«Наследникам также предоставляется свобода выбора. Наследник может принять наследство или отказаться от него (прямо или косвенно, не совершая действий, направленных на принятие наследства). Он может отказаться от наследства в пользу других наследников в знак расположения к ним или из-за долгов, которыми обременено наследство, и т.д.» [25, с. 26].
Воля наследника должна выражаться свободно и не подвергаться воздействию извне. Если волеизъявление наследника не было свободным, принятие наследства или отказ от него могут быть признаны недействительными.
Охранительные принципы наследственного права включают в себя два принципа. Первый предполагает охрану: основ правопорядка и нравственности; интересов наследодателя и наследников; интересов других физических и юридических лиц.
Проявлением этого принципа являются устранение недостойных наследников, защита тайны завещания, выполнение завещательных распоряжений и т.д.
Второй принцип заключается в охране наследства от посягательств. В соответствии с этим принципом нормы закона обеспечивают:
– раздел наследственного имущества согласно завещанию или нормам закона;
– охрану и управление наследством;
– возмещение расходов по охране и управлению имуществом.
Совместное право собственности может быть прекращено путем раздела наследственного имущества по соглашению наследников, принявших наследство, либо в судебном порядке, если соглашение между наследниками не достигнуто.
По соглашению наследников, без участия суда и нотариальных органов не может быть разделено наследственное имущество, включающее имущество, требующее государственной регистрации, и имущество, которое не может быть выдано без судебного или нотариального постановления.
«Наследственное имущество может делиться между наследниками в соответствии с их наследственными долями. При распределении неделимых предметов наследник, получивший вещь, по стоимости, превышающей его долю, может выплатить другим наследникам компенсацию» [25, с. 49].
Охрана наследства осуществляется в интересах наследников, отказополучателей, кредиторов наследодателя. «Меры по охране наследства принимают по месту открытия наследства государственный нотариус, должностные лица, уполномоченные совершать нотариальные действия, консульское учреждение, если наследство находится за границей» [24, с. 45].
Библиографический список
- Гордон М.В. Наследование по закону и по завещанию. М.: Юрид. лит., 1989. 137 с.
- Гражданское право / под ред. А.П. Сергеева, Ю.К. Толстого. М.: Проспект, 1999. Т. 3. 624 с.
- Гришаев С.П. Наследственное право. М.: Юрист, 2003. 272 с.
- Грудцына Л.Ю. Наследование в вопросах и ответах. М.: Бератор-Пресс, 2009. 174 с.
- Гуев А.Н. Постатейный комментарий к части третьей гражданского кодекса РФ. М.: ИНФРА-М, 2010. 448 с.
- Данилов Е.П. Наследование. М., 2001. 132 с.
- К вопросу о праве денежного обращения как подотрасли финансового права / Р.Э. Товмасян // Финансовое право. 2009. №2.
- Комментарий к гражданскому кодексу РФ. Ч. 1 / под ред. О.Н. Садикова. М.: Юрайт-Издат, 2005. 778 с.
- Мананников О.Н. Наследственное право России: учеб. пособие. М.: Дашков и Ко, 2004. 356 с.
- Матузов Н.И., Малько А.В. Тория государства и права: учебник. М.: Юристъ, 2004. 544 с.
- Немков А.М. Основные принципы советского наследственного права // Учен. зап. Перм. ун-та. 1965. №129. С. 109.
- Никитюк П.С. Наследственное право и наследственный процесс. Кишинев: Штиинца, 1973. 390 с.
- Пискотин М.И. Советское бюджетное право. М.: Юрид. лит., 1971. 288 с.
- Резников Е.В. Наследственное право РФ // Вестн. МГУ. 2002. №4.
- Рубанов А.А. Наследование в международном частном праве. М.: Наука, 1966. 225 с.
- Рясенцев В.А. Наследование по закону и по завещанию в СССР. М.: Знание, 1972. 356 с.
- Свердлык Г.А. Принципы советского гражданского права. Красноярск: Изд-во Краснояр. ун-та, 1985. 200 с.
- Телюкина М.В. Наследственное право: комментарий гражданского кодекса РФ. М., 2002. С.216.
- Теория государства и права: учебник / под ред. А.М. Васильева М.: Юристь, 1983. 544 с.
- Теория государства и права: учебник для юрид. вузов / под ред. А.С. Пиголкина. М., 2004. С. 272.
- Тимонина Ю.В. Комментарий к части третьей гражданского кодекса РФ. М.: Юрайт-М, 2002. 109 с.
- Толстой Ю.К. Наследственное право. М., 1999. 521 с.
- Храмцов К.В. Правовое регулирование наследования в Российской Федерации. Омск, 2002. С. 215.
- Чечот Д.М. Как защитить право. М., 1987. С. 145.
- Широкова И.Г . Наследственное право. М.: ПРИОР, 2001. 64 с.
- Яковлев В.Ф. Общая часть гражданского права в современном законодательстве и юридической практике. Свердловск, 1979. 192 с.