Przykrywanie metod proszę o porady (java)

0

Witam,
mam takie zadanie. Dopiero uczę się javy i nie bardzo wiem jak się zabrać do tego zadania. Nie wiem jak zrobić żeby klasa InnerClass2 przykrywała metodę getAnotherString. Konstruktor w klasie Zadanie_3b zrobiłem tak

Zadanie_3b(){super();} 

Proszę o porady. Oto zadanie:

2.3. Dany jest program:

public class Zadanie_3 {      
    protected InnerClass1 ic; 
  
    public Zadanie_3() { 
 ic = new InnerClass1(); 
    } 
  
    public void displayStrings() { 
 System.out.println(ic.getString() + "."); 
 System.out.println(ic.getAnotherString() + "."); 
    } 
  
    static public void main(String[] args) { 
  Zadanie_3 c1 = new Zadanie_3(); 
 c1.displayStrings(); 
    } 
  
    protected class InnerClass1 { 
  public ing getString() {  
     return "InnerClass1: getString wywołane"; 
 } 
  
  public String getAnotherString() { 
     return "InnerClass1: getAnotherString wywołane"; 
 }}} 

Co pojawi się na ekranie po uruchomieniu programu?
Utworzyć klasę Zadanie_3b.java która będzie podklasą Zadanie_3 oraz jej klasę wewnętrzną
InnerClass2. Klasa InnerClass2 powinna przykrywać metodę getAnotherString (generując
napis "InnerClass2: getAnotherString wywołane"). Klasa Zadanie_3b powinna
zawierać:

  • konstruktor inicjalizujący odziedziczoną zmienną ic,
  • funkcję główną main która utworzy instancję klasy Zadanie_3b oraz wywoła metodę
    displayStrings dla tej instancji.
1

żeby przykryć metodę wystarczy ją nadpisać w kalsie podrzędnej, czyli w klasie zadanie_3b jeszcze raz deklarujesz metodę tylko w innej klasie wewnętrznej:

protected class InnerClass2 { 
public String getAnotherString() {
     //return "InnerClass1: getAnotherString wywołane"; <-   -stare
return "InnerClass2: getAnotherString wywołane";
 }
}

Teraz chcesz korzystać w klasie 3b z metody getAnotherString ale z klasy InnerClass2 a nie InnerClass1

Konstruktor będzie wyglądał więc tak (super wedle uznania, ale w tym przypdaku niekoniecznie):

Zadanie_3b(){
//  ic = new InnerClass1(); 
ic = new InnerClass2(); 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1