Użycie składowych klasy bazowej w klasie pochodnej

0

Witam
Otóż mam takie pytanie:
Posiadam 2 klasy: klasę Bazowa oraz klasę Pochodna. Chcial bym w klasie pochodna używać składowych i metod klasy bazowa.
Czy jeżeli bym stworzył obiekt w klasie pochodna: Pochodna nazwa = new Pochodna; to czy poprzez takie wywołanie w klasie ( Pochodna ): nazwa.metodaZBazowa() mógł bym korzystać z danej metody czy trzeba to zrobić inaczej? Jeżeli tak to w jaki sposób?

3

albo ja nie kontaktuje albo napisales to bardzo nie zrozumiale/bez sensu

jezeli masz klase bazowa i dziedziczysz nia w klasie pochodna czyli

class pochodna extends bazowa

to z automatu wszystkie metody o modyfikatorze public bedziesz mogl spokojnie uzywac w klasie pochodna po prostu piszac wywlowanie tej funkcji (dlatego to sie nazywa dziedziczenie, bo potomek dostaje cos od poprzednika)

1
N3rvous napisał(a):

Witam
Otóż mam takie pytanie:
Posiadam 2 klasy: klasę Bazowa oraz klasę Pochodna. Chcial bym w klasie pochodna używać składowych i metod klasy bazowa.
Czy jeżeli bym stworzył obiekt w klasie pochodna: Pochodna nazwa = new Pochodna; to czy poprzez takie wywołanie w klasie ( Pochodna ): nazwa.metodaZBazowa() mógł bym korzystać z danej metody czy trzeba to zrobić inaczej? Jeżeli tak to w jaki sposób?

Hej,

Co do składowych, to poniżej zamieszczam małą tabelką ilustrującą dostęp do składowych klasy w zależności od użytych modyfikatorów dostępności. Miej ją pod ręką i korzystaj kiedy zajdzie potrzeba :)

     /**
      *                                  private           brak modyfikatora       protected              public
      * ta sama klasa                    tak               tak                     tak                    tak
      * ten sam pakiet, podklasa         nie               tak                     tak                    tak
      * ten sam pakiet, inna klasa       nie               tak                     tak                    tak
      * inny pakiet, podklasa            nie               nie                     tak                    tak
      * inny pakiet, inna klasa          nie               nie                     nie                    tak
      */

A poniżej prezentuję Ci prosty przykład dziedziczenia oraz używania metod klasy bazowej w klasie dziedziczącej.

/*
 * KLASA GŁÓWNA
 */
public class SuperBohater {
     
     /*
      * Deklaracja zmiennych składowych
      */
     private int zajebistość;
     private double wzrost;
     private String ksywka;
     private boolean realność;
     
     /*
      * Konstruktor bezargumentowy
      */
     public SuperBohater() {
          zajebistość = 100;
          wzrost = 180;
          ksywka = "BezImiennyMściciel";
          realność = true;
     }
     
     /*
      * Przeciążenie konstruktora z argumentami
      */
     public SuperBohater(int z, double w, String k, boolean r) {
          zajebistość = z;
          wzrost = w;
          ksywka = k;
          realność = r;
     }
     
     // Ustawia wartość zajebistości dla suberbohatera.
     public void setZajebistość(int z) {
          zajebistość = z;
     }
     
     // Pobiera wartość zajebistości suberbohatera.
     public int getZajebistość() {
          return zajebistość;
     }
     
     // Ustawia wartość wzrostu dla suberbohatera.
     public void setWzrost(double w) {
          wzrost = w;
     }
     
     // Pobiera wartość wzrostu suberbohatera.
     public double getWzrost() {
          return wzrost;
     }
     
     // Ustawia ksywkę dla suberbohatera.
     public void setKsywka(String k) {
          ksywka = k;
     }
          
     // Pobiera ksywkę suberbohatera.
     public String getKsywka() {
          return ksywka;
     }

     // Ustawia wartość realności superbohatera.
     public void setRealność(boolean r) {
          realność = r;
     }
     
     // Pobiera wartość realności superbohatera.
     public boolean getRealność() {
          return realność;
     }
}

/*
 * KLASA POCHODNA
 */
public class Batman extends SuperBohater {
     
     /*
      * Konstruktor klasy Batman
      */
     Batman(int z, double w, String k, boolean r) {
          
          // Wywołanie konstruktora klasy bazowej
          super(z, w, k, r);
     }
     
     public static void main(String args[]) {
          
          // Utworzenie egzemplarza klasy pochodnej
          Batman batman = new Batman(100, 180.0, "Batman", true);
          
          // Utworzenie dwóch egzemplarzy klasy bazowej
          SuperBohater spiderman = new SuperBohater(-69, 140.0, "Człowiek Pajonk", false);
          SuperBohater mściciel = new SuperBohater();
          
          // Pobranie różnych wartości z pomocą metod klasy bazowej
          System.out.println(
                    "Zajebistość Batmana: " + batman.getZajebistość() + '\n' +
                    "Ksywka Mściciela: " + mściciel.getKsywka() + '\n' +
                    "Wzrost Spidermana: " + spiderman.getWzrost() + '\n');
          
          // Ustawienie różnych wartości z pomocą metod klasy bazowej
          batman.setZajebistość(9999999);
          mściciel.setKsywka("Karol");
          spiderman.setWzrost(90.0);
          
          // Raz jeszcze pobieramy wartości
          System.out.println(
                    "Zajebistość Batmana: " + batman.getZajebistość() + '\n' +
                    "Ksywka Mściciela: " + mściciel.getKsywka() + '\n' +
                    "Wzrost Spidermana: " + spiderman.getWzrost());
     }
}

Uruchomienie klasy Batman daje w wyniku:

Zajebistość Batmana: 100
Ksywka Mściciela: BezImiennyMściciel
Wzrost Spidermana: 140.0

Zajebistość Batmana: 9999999
Ksywka Mściciela: Karol
Wzrost Spidermana: 90.0

Pozdrawiam serdecznie.

0

Dzięki. Rozjaśniliście mi ten temat :)

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