Wątek przeniesiony 2016-12-29 16:19 z Java przez bogdans.

Problem z dziedziczeniem

0

Witam. Mam następujący problem:

Stworzyłem sobię klasę Komponent:

 package com.company;
public class Komponent {
    public String getNazwa() {
        return "nazwa";
    }

    public int getWaga() {
        return this.waga;
    }


    public int getCena() {
        return this.cena;
    }


    public String getProducent() {
        return this.producent;
    }


    protected String nazwa;
    protected int waga;
    protected int cena;
    protected String producent;

    public Komponent(String nazwa, int waga, int cena, String producent) {
        this.nazwa = nazwa;
        this.waga = waga;
        this.cena = cena;
        this.producent = producent;
    }



}

Następnie chciałbym aby klasa Konsole dziedziczyła z Komponent, co robię poniżej. Problem pojawia się gdy chce zabezpieczyć kod ustawiam private albo protected i robie gethery.

Teraz w klasie Konsole:

 package com.company;

public class Konsole extends Komponent {
    Konsole[] konsola = new Konsole[4];
    konsola[1]= ("nazwa",100,20,"cos");

    public Konsole(String nazwa, int waga, int cena, String producent) {
        super(nazwa, waga, cena, producent);
    }
}

Chce stworzyć tablice przykładowo 4 elementową różnych konsol i uzyc parametrów nazwa waga cena producent z Komponent tylko, że wyskakują mi błędy:

Error:(5, 13) java: ']' expected
Error:(5, 14) java: ';' expected
Error:(5, 15) java: illegal start of type
itp

Jestem pewien, że robię coś źle. Że nie zrozumiałem tematu, ale naprawde mnie to przerastai nie wiem czemu to nie chce zadziałać i poprawnie się skompilować. Szukałem informacji o dziedziczeniu w wykładach mojego prowadzącego,http://www.altcontroldelete.pl/artykuly/programowanie-obiektowe-dziedziczenie/ http://javastart.pl/static/programowanie-obiektowe/dziedziczenie-i-konstrukcja-super/ i analizowałem przykłady jednakże nie umiem zaimplementować tego do swojego programu. Proszę o pomoc dla laika i pozdrawiam :)

0

To:

Konsole[] konsola = new Konsole[4];
konsola[1]= ("nazwa",100,20,"cos");

to raczej powinno być w main, ewentualnie jakiejś metodzie w klasie Konsole.

0
 package com.company;

public class Konsole extends Komponent {
    public static void main(String[] args) {
        Konsole[] konsola = new Konsole[4];
        konsola[1]= ("nazwa",100,20,"cos");
    }






    public Konsole(String nazwa, int waga, int cena, String producent) {
        super(nazwa, waga, cena, producent);
    }
}


Są błędy:

Error:(6, 29) java: ')' expected
C:\Users\Przemek\IdeaProjects\HurtowniaKomputerowa\src\com\company\Konsole.java
Error:(6, 33) java: ';' expected
Error:(6, 30) java: not a statement

Wcześniej, też próbowałem w main to wrzucic jednakże nie rozwiązuje to problemu.

W momencie tworzenia tablicy i wypelniania konsola[1] nie widzi deklaracji z Komponent czyli nazwy ceny wagi itp a powinna

0

Dodaj new Konsole przed ("nazwa",100,20,"cos");

0

Zadziałało. Teraz gdybym np chciał stworzyć bazę tych konsol i np wyświetlić je w GUI na jakiejś liście albo nawet ten 1 element tablicy musiałbym użyć

System.out.println(); 

i w nawiasie co musialbym wpisac? Musze uzyć najpierw

 public  String toString()

czy jakoś inaczej mogę wyświetlać te elementy? Nie chodzi mi o to, że pętlę i po kolei każdy element tylko jak wyświetlić dane na temat tej konsoli1 przykladu

0
 System.out.println(Arrays.toString(konsola));

Ponadto w klasie Konsole musisz napisać taką mniej więcej metodę:

 public String toString(){
    return "Konsola: " + nazwa + " cena: " + cena + " waga: " + waga + " producent: " + producent;
}

A przy okazji, Twoje nazwy są nielogiczne. Klasa winna się nazywać Konsola, a tablica obiektów tej klasy konsole.

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