Spre deosebire de cazul precedent, constructorului superclasei i se transmite un argument, care este atribuit ca valoare câmpului numeric. Ca și înainte, valoarea câmpului este afișată utilizând metoda supraplastică showA ().
Constructorul de subclase are de asemenea un argument. Valoarea argumentului este atribuită câmpului numeric. definite direct în clasă. Câmpul cu același nume are o valoare mai mică decât argumentul constructorului. Pentru a face acest lucru, se numește constructor superclass cu argumentul corespunzător. Când se execută un constructor de subclase, se afișează un mesaj despre valoarea celor două câmpuri, iar apelul la câmpul definit în subclasă este efectuat de numărul de nume. dar accesul la câmpul definit în superclasa prin instrucțiunea super.number. Valorile ambelor câmpuri pot fi afișate folosind metoda showB ().
Metoda principală a programului conține comanda pentru a crea un obiect subclasă, comanda pentru a modifica valoarea câmpului numeric. definite într-o subclasă (nr.number = 10), precum și comenzi pentru afișarea valorilor câmpurilor utilizând metodele showA () și showB (). Ca urmare a acestui program, obținem următoarele:
Crearea unui obiect superclass cu un câmp 4 Un obiect a fost creat cu câmpuri: 4 și 5
Câmpurile obiectelor 4 și 10
Prin același principiu ca și înlocuirea câmpurilor cu nume potrivite, se înlocuiește metodele cu aceleași semnături. Cu toate acestea, prin metode, situația este oarecum mai complicată, deoarece există un astfel de mecanism ca metodele de supraîncărcare. În plus față de supraîncărcare, un concept important este redefinirea metodelor.
Sunt surprins de respectarea principiilor. Atunci ești pentru guvern, apoi împotriva lui!
După cum sa menționat deja, în cazul în care o subclasă metodă descrisă cu o semnătură care se potrivește cu semnătura metodei moștenită de la superclasa, atunci subclasa metoda suprascrie o metodă superclasa. Cu alte cuvinte, dacă se numește metoda corespunzătoare, atunci acea versiune este utilizată, care este descrisă direct în subclasă. În acest caz, metoda veche din superclasa devine disponibilă dacă este accesată în formatul de link folosind cuvântul cheie super.
Există o diferență fundamentală între metodele imperative și supraîncărcarea. Când metodele de supraîncărcare au același nume, dar semnături diferite. Când se suprascrie, nu se potrivesc doar numele metodelor, ci
Ca rezultat al programului, primim succesiunea mesajelor:
Obiectul nr. 1 a fost creat! Obiectul nr. 2 este creat! Pentru obiectul numărul 1:
Numărul câmpului: 10 Obiectarea №2: un număr câmp: -20 simbol câmp: o instalație pentru №2: câmp Număr simbol 100 câmp: o instalație pentru №2: câmpul Număr: simbol 0 câmp: z
Vom analiza codul programului și rezultatul executării acestuia. Programul descrie clasa ClassA (superclass), pe baza căreia este creată o subclasă de ClassB. ClassA are un câmp de număr întreg. un număr de câmpuri întregi statice (inițializat cu o valoare nulă) și un cod de câmp închis. În plus, clasa descrie un constructor cu un argument (valoarea câmpului de număr), o metodă set () cu un argument pentru a atribui o valoare câmpului de număr. și metoda show () show pentru a afișa valoarea câmpului numeric.
Câmpul de numărare statică este utilizat pentru a calcula numărul de obiecte create. La crearea următorului obiect de clasă, valoarea acestui numărător este incrementată cu una. Pentru aceasta, constructorul de clasă ++ conține comanda count ++. În plus, designerul utilizând setul metoda () este setat la numărul de câmp (argumentul constructorului este trecut ca argument metodei), iar codul de comandă = count este setat la codul de câmp închis. Câmpul de cod conține numărul de ordine în care a fost creat obiectul corespunzător. Câmpul de numărare în acest scop nu este potrivit, deoarece este static și se schimbă de fiecare dată când este creat un obiect nou. În câmpul de cod, valoarea câmpului de numărare este scrisă după crearea obiectului și, ulterior, câmpul de cod al acestui obiect nu se modifică.
Înlocuiți metodele când moșteniți
Câmpul de cod (după atribuirea unei valori unui câmp) este utilizat în constructor pentru a afișa mesajul despre crearea unui obiect cu numărul corespunzător. Numărul obiectului (câmpul de cod) este utilizat și în metoda show (). pentru a facilita urmărirea informațiilor obiect despre valoarea câmpului numeric.
O subclasă ClassB este creată pe baza superclasei ClassA. În subclasa ClasaB, câmpul de numărare statică și câmpul numeric sunt moștenite. Codul privat nu este moștenit. Pe lângă aceste câmpuri moștenite, simbolul câmpului simbolic este descris direct în clasa ClassB. Constructorul de clase are două argumente: primul tip int pentru câmpul numărului și cel de-al doilea tip pentru câmpul de simbol.
ClassB cod constructor este format din doar două comenzi: apel constructorul super comandă superclasa (n) și o atribuire de caractere simbol câmp de valoarea de comandă = s (n și s - argumente pentru constructor). Cu a doua echipă, totul este simplu și simplu. Interesul este reprezentat de comanda de a apela constructorul superclass. Mai întâi, cu acest constructor, numărul câmpului moștenit este atribuit unei valori. În al doilea rând, valoarea numărului de câmpuri statice moștenite este mărită cu una. Aceasta înseamnă că toate obiectele, atât superclase cât și subclase, sunt păstrate în comun. În al treilea rând, deși codul de câmp nu este moștenit, este alocată de spațiul de memorie care urmează să fie introduse și numărul de ordine al obiectului creat. Pe crearea unui obiect nou se afișează un mesaj, iar numărul obiectului se citește din câmpul de cod "inexistent".
Metoda show () din clasa ClassB este suprascrisă. Semnatura metodei show () descrisă în clasa ClassB se potrivește cu semnătura metodei show (). descrise în clasa ClassA. Dacă metoda show () din clasa A prezintă informații despre numărul obiectului și valoarea câmpului său de număr. apoi în clasa ClassB, metoda show () expune de asemenea valoarea câmpului simbol. În acest caz, versiunea veche (originală) a metodei de la ClassA este de asemenea numită în metoda de suprascriere show (). Pentru aceasta, folosiți instrucțiunea formularului super.show (). Această versiune inițială a metodei, printre altele, citește din (dar de fapt existente) codul câmp numărul non-moștenit de serie al obiectului și îl afișează în mesajul de pe ecran.
Metoda set () din clasa ClassB este supraîncărcată. Deși ClassA are o metodă cu același nume, semnăturile metodelor din superclaj și subclasă sunt diferite. În superclaj, metoda set () are un argument numeric, iar în subclasa acestei metode se află două argumente: numerice și simbolice. Prin urmare, în clasa ClassB, există două variante ale metodei set (), cu unul și două argumente. Primul este mostenit de la superclajul ClassA. iar al doilea este definit direct în subclasă
Metoda principală a programului de comenzi ClassA objA = new ClassA (10) și ClassB objB = new ClassB (-20, 'o') sunt două obiecte: objA opune superclasă și obiect subclasă objB. Ca rezultat al executării acestor comenzi, mesajul Obiect №1 este creat pe ecran! și Obiect numărul 2 este creat! - Mesajele sunt afișate de constructori. Valorile câmpurilor obiectelor create sunt verificate de comenzile objA.show () și objB.show (). Din moment ce metoda show () este supraîncărcată, în primul caz