Quindi, questa è l'ultima domanda di ereditanza fastidiosa che ho avuto per un po 'quindi volevo andare avanti e chiedere. Quindi darò un esempio in PHP:?Ereditarietà sotto il cofano
<?php
class Base
{
private $z = 4;
function GetPrivate()
{
echo $this->z;
}
}
class Derived extends Base
{
}
$b = new Base();
$d = new Derived();
$d->GetPrivate();
>
abbastanza semplice. Quando ho sempre letto sull'ereditarietà, la spiegazione era semplicemente "si eredita il pubblico e i membri protetti" e basta. Quello che non capisco sono un paio di cose su come l'interprete in questo esempio spiega cosa appartiene a cosa.
Ad esempio, quando si crea una classe derivata, sono in grado di utilizzare la funzione pubblica "GetPrivate" della Base per ottenere le variabili private della classe base. Tuttavia, la semplice definizione di ereditarietà non funziona con questo per me. Ciò che intendo è che eredito il metodo GetPrivate ma ho ancora una sorta di collegamento a variabili private solo da quel metodo che apparteneva alla classe base (anche se $ si riferisce all'oggetto classe derivata). Non sono riuscito a creare una nuova funzione nella classe derivata per accedere a tali variabili private.
Così, l'interprete tiene sotto controllo le funzioni ereditate dalla classe base e i possibili collegamenti che tengono a membri privati disponibili solo per quella classe base?