• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wywołać metodę z innej klasy?

Object Storage Arubacloud
0 głosów
389 wizyt
pytanie zadane 12 kwietnia 2019 w Java przez Placidus Użytkownik (580 p.)

Witam, mam zapewne banalny problem mam kod w 3 różnych klasach Main, abstrakcyjną Osoba, Pracownik 

to main

package instanceoof;
import pracownik.Osoba;
import pracownik.Pracownik;
import pracownik.Student;

public class Main {

    public static void main(String[] args) {

       Osoba[] osoba = new Osoba[4];
       osoba[0] = new Pracownik("Maciek", "Wacek", 12123);
        

        System.out.println(osoba[0].get);

    }
}

chciałbym wywołać metodę getSalary z klasy Pracownik jednak niemam takiej możliwość, co trzeba zrobić żeby można było to zrobić? 

package pracownik;

public class Pracownik extends Osoba {

    private double salary; //wynagrodzenie

    public double getSalary() {
        return salary;
    }

    //    Pracownik(String name, String surname) {
//        super(name, surname);
//    }

   public  Pracownik(String name, String surname, double salary) {
        super(name, surname);
        this.salary = salary;

    }


i jeszcze klasa Osoba 

package pracownik;

public abstract class Osoba {

    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    Osoba(String name, String surname){
        this.firstName = name;
        this.lastName = surname;
    }


}

komentarz 12 kwietnia 2019 przez niezalogowany
xxx

1 odpowiedź

0 głosów
odpowiedź 12 kwietnia 2019 przez niezalogowany
wybrane 12 kwietnia 2019 przez Placidus
 
Najlepsza

Nie możesz tak zrobić, bo tablica jest typu Osoba, a klasa ta nie ma metody getSalary. 

Przekonasz się o tym, robiąc coś takiego:
 

Pracownik pracownik = osoba[0];


Żeby użyć tej metody, możesz zrobić rzutowanie:
 

Pracownik pracownik = (Pracownik) osoba[0];

I wywołać metodę getSalary na obiekcie pracownik klasy Pracownik.


Możesz też przerobić klasę abstrakcyjną i dodać do niej metodę getSalary (nie musisz jej implementować w klasie abstrakcyjnej).

Podobne pytania

0 głosów
2 odpowiedzi 92 wizyt
0 głosów
0 odpowiedzi 154 wizyt
pytanie zadane 23 stycznia 2019 w Java przez Damian Lasończyk Nowicjusz (120 p.)
0 głosów
1 odpowiedź 365 wizyt
pytanie zadane 6 sierpnia 2018 w PHP przez sebastian_23 Początkujący (380 p.)

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...