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?
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)
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.
Dzięki. Rozjaśniliście mi ten temat :)