Clasa interioară

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În programarea orientată pe obiecte (OOP, O bject O riented P rogramming) o clasă interioară (din „limba engleză de clasă imbricată sau o clasă interioară) este o clasă declarată într -o altă clasă de clasă sau de interfață. Acestea se găsesc în limbi precum Java , începând cu versiunea 1.1 sau D. În Python , este posibil să creați o clasă internă în cadrul unei clase, metode sau funcții.

Generalitate

O instanță a unei clase normale sau principale poate exista singură. Pe de altă parte, o instanță a unei clase interioare nu poate fi instanțiată fără a fi legată de o clasă principală.

Să luăm o Macchina cu patru Ruote ca o noțiune abstractă. Ruote noastre au caracteristici specifice care depind de a face parte din Macchina noastră. Acest concept nu reprezintă Ruote ca Ruote în general, care pot face parte dintr-un vehicul, ci le reprezintă în mod specific. Putem modela acest concept folosind clasele interioare după cum urmează:

Avem Macchina clasă principală. Instanțele din clasa Macchina sunt alcătuite din patru instanțe din clasa Ruote . Această implementare specială a Ruote este specifică mașinii, astfel încât codul nu modelează conceptul general al unei roți care poate fi cel mai bine reprezentat ca o clasă principală. Deci, este conectat semantic la clasa Macchina și codul Ruote este cumva cuplat la clasa externă. Roata este mai unită cu mașina. Roata pentru o anumită mașină este unică, în timp ce pentru roata, în general, este unită în ansamblu la mașină. Spunem că Ruote noastre fac parte din clasa Macchina .

Clasele interioare ne oferă un mecanism pentru a modela cu exactitate această conexiune. Ruote , Macchina fiind clasa principală și Ruote fiind clasa interioară.

Prin urmare, clasele interioare privesc orientarea obiectului anumitor părți ale programului care altfel nu ar fi încapsulate într-o clasă.

Bucăți mari de cod dintr-o clasă ar putea fi modelate sau rescrise ca o clasă principală separată, mai degrabă decât ca o clasă interioară. Acest lucru face codul mai general în aplicația sa și, prin urmare, reutilizabil, dar ar putea fi o generalizare prematură. Poate fi mai eficient dacă codul dvs. are multe clase interne cu funcționalitate partajată.

Tipurile claselor interioare

În Java există multe tipuri de clase interne care sunt împărțite în patru grupuri diferite:

  • Clase statice imbricate (și interfețe).
  • Clase de membri.
  • Cursuri locale.
  • Cursuri anonime .

Cursuri statice în Java

Clase interioare declarate cu funcția de cuvânt cheie static ca clase statice comune; acestea nu sunt conectate la o instanță, dar pot accesa doar variabilele și metodele statice ale clasei care conține. Tipurile externe trebuiau să preceadă numele clasei interne cu cel al clasei care conține. Clasele interioare sunt implicit statice.

 / * Clasa care conține * /
clasa publică ContainerClass
{
	private static String variableStatica = "variabilă statică" ;

	// Constructorul clasei care conține
	public ContainerClass ()
	{
	}

	// Metoda statică care poate numi clasa interioară statică
	public static void static Method () {
		InterfacciaInterna ClasseInterna ic = new ();
		ic . print ();
	}

	// Clasa interioară statică
	Clasa statică privată implementează ClasseInterna InterfacciaInterna
	{
		// Constructorul clasei interioare statice
		public InnerClass ()
		{
		}

		/ * Implementarea clasei interioare
* Obțineți variabila statică din clasa care conține * /
		public nul print () {
			Sistem . afară . println ( variableStatic );
		}
	}

	// Interfață internă (implicit statică)
	interfață privată InterfacciaInterna {
		public nul print ();
	}
}

Fiecare instanță a unei clase interioare se referă la o instanță a clasei care conține, cu excepția claselor interioare locale și a claselor anonime declarate într-un context static. Prin urmare, se pot referi implicit la variabile și metode ale clasei care conține instanța. Referința clasei interne la instanță poate fi obținută prin NomeDellaClasseContenitrice.this. Cu toate acestea, o clasă interioară nu poate conține variabile statice sau metode. La început, trebuie trimisă o referință la clasa conținută, ceea ce înseamnă că nu poate exista o instanță într-o metodă de instanță sau într-un constructor al clasei care conține sau (pentru membrii claselor și claselor anonime) utilizând sintaxa instanceContenitrice.new ClasseInterna ().

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT