Cum să descrie clasa și subclasa de programare, tutoriale și exemple

Capitolul 2. programarea orientată spre obiecte în Java

Cum să descrie clasa și subclasa

Deci, definiția de clasă începe cu clasa cuvântul, urmat de numele clasei este scris. Acordul „Convenții cod“ recomanda să înceapă un nume de clasă, cu o majusculă.

Înainte de clasa cuvânt poate scrie modificatori de clasă (modificatori de clasă). Acesta este unul dintre cuvintele publice, abstract, finala, strictfp. Înainte de numele unei clase imbricate pot fi furnizate, în plus, modificatorii protejat, privat, statice. Modificatorii vom introduce ca învățarea limbilor străine.

Organismul de clasă, care, în orice ordine listează câmpurile, metodele, clasele imbricate și interfețe, închise în paranteze.

În câmpul descriere indică tipul, apoi printr-un gol, numele și, probabil, o valoare inițială după semnul egal, care poate fi scrisă o expresie constantă. Toate acestea sunt descrise în Capitolul 1.

Descriere câmp poate începe cu unul sau mai mulți modificatori opționale publice, protejate, privat, statică, finală, tranzitorie, volatile. Dacă aveți nevoie pentru a pune câteva modificatori, apoi lista le JLS recomandă, în această ordine, deoarece unele compilatoare necesită o anumită ordine de înregistrare modificatori. Cu modificatori ne vom întâlni în funcție de necesități.

În cazul în care descrie metoda, indică tipul de valoare returnată sau vidul cuvânt. urmat de un spațiu, numele metodei, și apoi, în paranteze, lista de parametri. După aceea semnele efectuate prin metoda acolade.

Descrierea metodei poate începe cu publicul modificatori, protejat, privat, abstract, statică, finală, sincronizat, nativ, strictfp. Le vom intra, dacă este necesar.

În lista de parametri separați prin virgulă, și fiecare tip de numele parametrului. Înainte de a tasta orice parametru poate fi modificator final. Acest parametru nu poate fi modificat în metoda. Lista parametrilor poate fi omisă, dar paranteze sunt salvate.

Înainte de începerea metodei pentru fiecare parametru este alocată celulă RAM în care este copiat parametrul, făcând referire la o metodă predeterminată. Un astfel de proces este numit de transfer parametru semnificativ.

Listarea 2.1 arată cum să aranjeze metoda pentru găsirea de împărțire în două rădăcina unei ecuații neliniare din figura 1.5.

Listarea 2.1. Găsirea rădăcini ale ecuației neliniare prin bisektsyi

static dublu EPS finală privat = le-8; // constanta

dublu un privat = 0,0, b = 1,5, rădăcină; // domenii particulare

getRoot dublu publice (> // Metoda de acces

f dublu privat (double x)

întoarce x * x * x - 3 * x * x + 3; // sau altceva

bisect void privat ()

// metodă funcționează cu câmpuri de instanță

double y = 0,0; // variabila locala - nu domeniu

root = 0,5 * (a + b); y = f (root);

if (Math.abs (y)

// Rădăcina este găsit. Din bucla

// Dacă capetele segmentului [a; rădăcină]

// funcție are semne diferite:

dacă (f (a) * y <0.0> b = rădăcină;

// înseamnă rădăcină aici

// Transferăm litera b la punctul rădăcină

// În caz contrar:

// ia acum punctul A la punctul rădăcină

// continuă până la [a; B] nu devine mic

> În timp ce (Math.abs (b-a)> = EPS);

statice void main (String [] args) publice

Bisection2 b2 = new Bisection2 ();

b2.getRoot () + // scris la partea de sus printr-o metodă de acces

În descrierea lui f () metoda salvate stil vechi, de procedură: metoda devine un argument, le procesează și returnează rezultatul. Descrierea metodei bisect realizată în spiritul OEP: metoda este activ, el este tras la b2 câmpurile instanță și el pune rezultatul în câmpul dorit. bisect metoda () - acesta este mecanismul intern al unei clase Bisection2, astfel încât acesta este închis (privat).

Numele metodei, numărul și tipurile de parametri care formează metoda de semnătură (semnătură). Compilatorul distinge metode nu sunt date de numele lor, și semnăturile. Acest lucru vă permite să înregistrați metode diferite, cu același nume, număr și / sau tipuri de parametri diferiți.

Tipul de retur nu este parte a semnăturii metodei, astfel încât metode nu poate varia numai tipul de rezultatul muncii lor.

De exemplu, într-o clasă de automobile am înregistrat metoda MoveTo (int x, int y). desemnând o destinație de coordonatele sale geografice. Puteți defini, de asemenea, metoda MoveTo (destinație string) pentru a specifica numele geografic de destinație și se referă la ea, după cum urmează:

Aceasta tehnica numita duplicare de suprasarcină (supraîncărcare). Supraîncărcarea metode este foarte convenabil de a utiliza. Amintiți-vă în capitolul 1, deducem orice tip de date de pe ecran prin printin (), fără griji cu privire la detaliile exact tipul obținem. De fapt, am folosit diferite metode de t același nume printin. fără să se mai gândească la asta. Desigur, toate aceste metode trebuie să fie planificate cu atenție în prealabil și descrise în clasa. Acest lucru se face în clasa PrintStream, în cazul în care aproximativ douăzeci de metode de imprimare () și println ().

Dacă vom scrie metoda cu același nume, în subclasa, de exemplu:

Clasa de camion se extinde de automobile

void MoveTo (int x, int y)

suprascrie metoda superclasa. Definirea exemplu de clasa Truck. de exemplu:

Truck gazel = new camion ();

și specificând gazei.moveTo (25, 150). ne întoarcem la clasa metoda de camion. Nu va suprascrie (imperativ) metoda.

Când aveți de a ignora drepturile de acces la metoda se poate extinde. publice Metoda publică trebuie să rămână deschise, sigure protejate pot fi deschise.

Este posibil să se aplice în cadrul subclasa la metoda superclasei? Da, puteți, dacă specificați numele metodei, super cuvântul. de exemplu, super.moveTo (30, 40). Puteți specifica numele metodei și înregistrate în aceeași clasă, spun acest lucru. de exemplu, this.moveTo (50, 70). dar în acest caz este de prisos. De asemenea, puteți specifica și numele câmpurilor de potrivire, și nu doar metode.

Aceste modificări sunt similare cu modul în care vorbim despre noi înșine, „I“ și nu „Ivan“, și spune „tată“ în loc de „Peter Sidorovich“.

Metode prioritari conduce la rezultate interesante. În clasă vom descrie metoda Pet voce (). Override într-o subclasă și de a folosi în cor clasă. așa cum este prezentat în Exemplul 2.2.

Listarea 2.2. EXEMPLU Metoda polimorfic

Pet clasă abstractă

voce void abstracte ();

Câine clasa extinde Pet