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

Java, problem z implementacją metod interfejsu

Object Storage Arubacloud
0 głosów
187 wizyt
pytanie zadane 13 sierpnia 2020 w Java przez amtrax Dyskutant (9,630 p.)

Cześć, 

posiadam dwa interfejsy:

public interface Beverages extends Positions {
		boolean hasAlc();
}
package interfaces;

public interface Positions {

	double getPrice();
	String getName(); 
	String getType();
	
}

interfejs Beverages rozszerza Positions 
Teraz w klasie Beverages implementuje interfejs interfaces.Beverages

[.....]

@Override
	public double getPrice() { return price;}
	@Override
	public String getName() {return name;}
	@Override
	public String getType() {return type;}
	@Override 
	public boolean hasAlc() {return alcohol; }
	

Dlaczego kompilator wskazuje błąd dla każdej z metod: 


 

The method getName() of type Beverages must override or implement a supertype method    Beverages.java   

 

komentarz 13 sierpnia 2020 przez mbabane Szeryf (79,280 p.)

Pokaz całą klasę Beverages (swoją drogą proponuje zmienić nazwę klasy lub interfejsu).

Na marginesie, lepiej będzie jak do kwot użyjesz klasy BigDecimal (getPrice).

1 odpowiedź

0 głosów
odpowiedź 13 sierpnia 2020 przez Wiciorny Ekspert (270,110 p.)
edycja 13 sierpnia 2020 przez Wiciorny
extends Positions

Dlatego, że te metody są źle zadeklarowane.  One należą do Positions, nie do Beverages
Jak wygląda klasa implementująca :) bo generalnie z powyższych rzeczy błędu nie ma 
 

public interface A {

    public String getName();

}

 

public interface B {

    public String toDo();

}


public class Cclass implements B {

    @Override public String toDo() {
        return null;
    }

    @Override public String getName() {
        return null;
    }
}

Dla przykładu tu nie ma błędu :)  Sprawdź czy nie korzystasz z wersji javy 1.5 np :) 

In Java 5 @Override was allowed only for methods overriding super class methods. Since Java 6 @Override is also allowed for methods implementing interface methods.

Więc jeśli używasz Javy  w wersji niższej niż 6, to nie powinieneś stosować adnotacji @Override 

komentarz 13 sierpnia 2020 przez amtrax Dyskutant (9,630 p.)

public abstract class Beverages implements interfaces.Beverages
{
  double price;
   String name;
   String type; 
   boolean alc;

protected  Beverages(double _price, String _name, String _type, boolean _alc)
{
   name = _name;
    type = _typel
   alc = _alc;
 }

    

@Override
    public double getPrice() { return price;}
    @Override
    public String getName() {return name;}
    @Override
    public String getType() {return type;}
    @Override
    public boolean hasAlc() {return alcohol; }
    
}

Tak wygląda cała klasa Beverages

komentarz 13 sierpnia 2020 przez Wiciorny Ekspert (270,110 p.)
edycja 13 sierpnia 2020 przez Wiciorny

implements interfaces.

 

Beverages implements interfaces.Beverages - klasa ma taką nazwe jak interfejs, to jest niepoprawne i nie podajemy pakietu dla interfejsu stąd nie wiadomo co tutaj się dzieje 

klassa abstakcyjna wiesz w jakim celu tworzysz taką klasę? 

protected  Beverages(double _price, String _name, String _type, boolean _alc)

{

   name = _name;

    type = _typel

   alc = _alc;

 }

co to jest? I 

1
komentarz 13 sierpnia 2020 przez mbabane Szeryf (79,280 p.)

Jeśli klasa Beverages jest w innym pakiecie niż interfaces to interfaces.Beverages tylko nieestetycznie wygląda, bo kompilator sobie z tym poradzi.

W ciemno obstawiam to co powiedziałeś o 1.5 bo Intellij lubi sobie czasem przestawić wersję Javy. Chyba że pytający jeszcze coś ukrywa w kodzie, bo nie pokazuje wszystkiego.

@Wiciorny  prośba, popracuj trochę nad formatem wypowiedzi, bo na prawdę ostatni komentarz to tak na brzdżone, że nie da się ogarnąć o co chodzi. 

Podobne pytania

0 głosów
3 odpowiedzi 3,143 wizyt
pytanie zadane 20 września 2017 w Java przez Dethavel Początkujący (280 p.)
0 głosów
1 odpowiedź 1,195 wizyt
pytanie zadane 10 października 2019 w Java przez magicznyukf Początkujący (260 p.)
0 głosów
1 odpowiedź 176 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...