Junior
Ի՞նչ է աբստրակտ դասի էությունը։
sobes.tech AI
Պատասխան AI-ից
Աբստրակտ դասի հիմնական նպատակը այն է, որ ծառայել որպես շաբլոն այլ դասերի համար: Այն չի կարող անմիջապես ստեղծվել, բայց կարող է պարունակել աբստրակտ մեթոդներ (անհատական մարմնով), ինչպես նաև կոնկրետ մեթոդներ և հատկություններ:
Հիմնական կետեր՝
- Նմուշ ստեղծել հնարավոր չէ:
new ԱբստրակտԴաս()կբերի սխալ: - Երեսպատում: Միայն ժառանգություն (
extends): - Աբստրակտ մեթոդներ: Դրանք սահմանում են ինտերֆեյսը, որը պետք է իրականացնել ենթակլասները: Նշվում են
abstractբառով և չունեն մարմին: - Կոնկրետ մեթոդներ և հատկություններ: Կարող են անմիջապես սահմանվել և օգտագործվել, ինչպես նաև վերագրանցվել ենթակլասներում:
- Հատկային իրականացում: Տրամադրում է ընդհանուր կառուցվածք և որոշ հիմնական ֆունկցիոնալություն, իսկ մանրամասները թողնում է ենթակլասներին:
Օրինակ՝
<?php
abstract class Գծագիծ {
protected $գույն;
public function __construct($գույն) {
$this->գույն = $գույն;
}
abstract public function հաշվարկելՏարածք(); // Աբստրակտ մեթոդ
public function ստանալԳույն() {
return $this->գույն;
}
}
class Վանդակ extends Գծագիծ {
private $արմատ;
public function __construct($գույն, $արմատ) {
parent::__construct($գույն);
$this->արմատ = $արմատ;
}
public function հաշվարկելՏարածք() {
return pi() * $this->արմատ * $this->արմատ;
}
}
class քառակուսին extends Գծագիծ {
private $պատուհան;
public function __construct($գույն, $պատուհան) {
parent::__construct($գույն);
$this->պատուհան = $պատուհան;
}
public function հաշվարկելՏարածք() {
return $this->պատուհան * $this->պատուհան;
}
}
// Օգտագործման օրինակ
$վանդակ = new Վանդակ("Կարմիր", 5);
echo "Վանդակային տարածք: " . $վանդակ->հաշվարկելՏարածք() . ", Գույն: " . $վանդակ->ստանալԳույն() . "\n";
$քառակուսին = new քառակուսին("Կապույտ", 4);
echo "Քառակուսի տարածք: " . $քառակուսին->հաշվարկելՏարածք() . ", Գույն: " . $քառակուսին->ստանալԳույն() . "\n";
// Հաջորդ կոդը սխալ կբերի՝ Fatal error: Աբստրակտ դասը կարող է միայն ժառանգվել
// $աբստրակտԳծագիծ = new Գծագիծ("Անհայտ");
Համեմատական աղյուսակ ինտերֆեյսների և սովորական դասերի հետ՝
| Գծանշում | Աբստրակտ դաս | Ինտերֆեյս | Սովորական դաս |
|---|---|---|---|
| Նմուշ ստեղծել | Ոչ | Ոչ | Այո |
| Երեսպատում | Այո (extends) + Իրականացում (implements) |
Միայն Իրականացում (implements) |
Այո (extends) |
| Մեթոդներ | Կոնկրետ և աբստրակտ | Միայն աբստրակտ (անհատական մարմնով) | Միայն կոնկրետ |
| Հատկություններ | Այո | Ոչ | Այո |
| Բազմամատյան ժառանգություն | Ոչ | Այո | Ոչ |
| Նպատակը | Հատկային իրականացում, ընդհանուր կառուցվածք | Կոնտակտի սահմանում (ծխել) | Լրիվ իրականացում, կոնկրետ օբյեկտ |
Օգտագործվում է, երբ կա ընդհանուր տրամաբանություն և հատկություններ, որոնք պետք է ունենա կապված դասերի խումբը, բայց դրանց կոնկրետ վարքագիծը (մեթոդների իրականացումը) տարբեր է: Սա ապահովում է կոդի բազմակի օգտագործում և միատարր կառուցվածք։