Klasa abstrakcyjna.

Wątek przeniesiony 2016-06-13 20:21 z Java przez bogdans.

J4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Witam, uczę sie programowania w Javie od niedawna i proszę o pomoc.
Mam błąd w linijce Ref lek1 = new Ref("Paski Accu Check Active",42, 0);
Nie wiem jak mam wywołać cene refundowaną 42 to zwykła cena zrobiłem funkcje Refundacja która oblicza mi ta cene lecz nie potrafię jej wywalić na ekran.
Pozdrawiam

Kopiuj

public class Leki {
	String nazwa;

	Leki(String nazwa){
		this.nazwa = nazwa;

	}
	public class Ref extends Leki{
		double cena;
		double znizka;
		Ref(String nazwa, double cena, double znizka) {
			super(nazwa);
			this.cena = cena;
			this.znizka = znizka;

		}

	void refundacja()
	{
		znizka = cena * 0.7;
	}
	void pokazInformacje(){
		System.out.println(nazwa);
		System.out.println(cena);
		System.out.println(znizka);
	}
	
	}
	
	public static void main(String[] args) {
		
	Ref lek1 = new Ref("Paski Accu Check Active",42, 0);
	lek1.pokazInformacje();
	lek1.refundacja();
	}

}

SO
  • Rejestracja: dni
  • Ostatnio: dni
0

Po co ci ta klasa zagnieżdżona?

nerdxg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
0

Ale z czym dokładnie masz problem?

Kopiuj
lek1.pokazInformacje(); // pokazuje ci informacje, ktore wprowadziles jako argumenty
lek1.refundacja(); // oblicze znizke

Jak chcesz dostać info ile wynosi zniżka to umieść metode "pokazInformacje()" po "refundacja()"

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

Problem jest z kompilacją: dopisz w deklaracji klasy Ref słówko static.

J4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

No serio zabrakło mi 1 słowka static żeby zaliczyc kolokwium haha ;p dzięki za odp

Wizzie
  • Rejestracja: dni
  • Ostatnio: dni
0

@jakub40 Ref niepotrzebnie jest klasą zagnieżdżoną, gdybyś zrobił ją jako normalną, to nie potrzebowałbyś static.

J4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 50
0

Polecenie było stwórz abstrakcyjna klasę dlatego musiała być zagnieżdżona, chyba że się mylę.
Czy ten kod jest waszym zdaniem już poprawny? Jeżeli chodzi o składnie klasy abstrakcyjnej.

Kopiuj
public abstract class Leki {
	String nazwa;

	Leki(String nazwa){
		this.nazwa = nazwa;

	}
	public static class Ref extends Leki{
		double cena;
		double znizka;
		Ref(String nazwa, double cena) {
			super(nazwa);
			this.cena = cena;

		}

	void refundacja()
	{
		znizka = cena * 0.7;

	}
	void pokazInformacje(){
		System.out.println(nazwa);
		System.out.println("Cena 100%: " + cena + " zł");
		System.out.println("Cena po refundacji: " + znizka + " zł");
	}
	
	}
	
	public static void main(String[] args) {
		
	Ref lek1 = new Ref("Paski Accu Check Active",42);
	lek1.refundacja();
	lek1.pokazInformacje();
	
	Ref lek2 = new Ref("Prezerwatywy durex",55);
	lek2.refundacja();
	lek2.pokazInformacje();

	}

}
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Polecenie było stwórz abstrakcyjna klasę dlatego musiała być zagnieżdżona

Mylisz się, jedno z drugim nie ma nic wspólnego.

Ten kod który pokazałeś to jest WTF tygodnia a nie poprawny kod. Chyba że potrafisz wyjaśnić w jakim celu masz tam tą zagnieżdżoną klasę, chętnie poslucham.

Wizzie
  • Rejestracja: dni
  • Ostatnio: dni
1

Nie, te dwa koncepty są ze sobą niezwiązane, tak jak pisał Shalom. Także umieść obie klasy w osobnych plikach, usuwając przy tym oczywiście słowo static z definicji klasy Ref. Trzy dodatkowe sprawy:

  1. Metoda refundacja jest zła, z takiego powodu, że przez nią możesz mieć obiekt nie w pełni zinicjalizowany. To znaczy jeśli nie wywołasz metody refundacja, to obiekt będzie niby typu Ref, ale pole znizka będzie miało wartość 0.0 (domyślna dla niezinicjalizowanego double). Wyrzuć tą metodę i trzymaj wszystko związane z inicjalizacją w konstruktorze.
  2. Nazwa klasy Leki zmień na liczbę pojedynczą, w końcu ten typ reprezentuje jeden lek.
  3. W programowaniu wszystkie nazwy klas, zmiennych, metod itd. nazywamy po angiesku. Chociaż domyślam się, że na uczelnię wymagali po polsku ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.