You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/ru/chapters/025.(Классы) Абстрактные классы (abstract classes)/content.md
+3-22Lines changed: 3 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,11 +36,11 @@ let v1: SuperAbstractClass = new SubStandardClass(); // Ok
36
36
let v2:SubStandardClass=newSubStandardClass(); // Ok
37
37
`````
38
38
39
-
Абстрактные классы могут содержать абстрактные члены, принадлежность к которым указывается с помощью ключевого слова `abstract`. Ключевое слово `abstract` можно применить к полям, свойствам (аксессоры) и методам абстрактного класса. При этом свойства и методы не должны иметь реализацию. В отличие от них, полям, помеченным как абстрактные, может быть присвоено значение по умолчанию.
39
+
Абстрактные классы могут содержать абстрактные члены, принадлежность к которым указывается с помощью ключевого слова `abstract`. Ключевое слово `abstract` можно применить к полям, свойствам (аксессоры) и методам абстрактного класса. При этом абстрактные члены не должны иметь реализацию.
publicabstract field:string; //инициализация не допустима
44
44
publicabstractget prop():string; // реализация не допустима
45
45
publicabstractset prop(value:string); // реализация не допустима
46
46
@@ -64,25 +64,6 @@ class SubConcreteClass extends SubAbstractClass { // конкретный под
64
64
classSubSubConcreteClassextendsSubConcreteClass {} // ... если они не были переопределены в классах-предках
65
65
`````
66
66
67
-
Как было сказано ранее, абстрактным полям может быть задано значение по умолчанию, но в этом случае обратится к нему могут только абстрактные классы в иерархии наследования.
68
-
69
-
`````ts
70
-
abstractclassSuperAbstractClass {
71
-
publicabstract field0:string='default value'; // объявление абстрактного поля со значением по-умолчанию
public field1:string=this.field0; // переопределение абстрактного поля и инициализация его значением абстрактного поля, которому было присвоено значение по умолчанию в абстрактном предке
78
-
}
79
-
80
-
classSubOnCreteClassextendsSubAbstractClass {
81
-
public field0:string; // конкретному классу необходимо переопределить два абстрактных поля, так как в предках был переопределен только один член
82
-
public field2:string;
83
-
}
84
-
`````
85
-
86
67
Абстрактные члены в полной мере удовлетворяют всем условиям реализации интерфейса. Другими словами, абстрактный класс, декларирующий реализацию интерфейса, может не реализовывать его члены, а лишь пометить их как абстрактные, тем самым переложить реализацию на своих потомков.
0 commit comments