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

Klasy i obiekty - Java - podstawy

Object Storage Arubacloud
0 głosów
323 wizyt
pytanie zadane 26 marca 2019 w Java przez gorgonkowa Obywatel (1,810 p.)
edycja 26 marca 2019 przez gorgonkowa

Siemka. Chciałabym poprosić Was o małą pomoc, ponieważ nie wiem, w którym miejscu popełniam błąd przy tworzeniu zadania o treści:
"Napisz klasę Zarowka przedstawioną w przykładzie. Klasa powinna zawierać metody:
a) zapalZarowke(), która będzie wyświetlała napis: „Żarówka zapalona;
b) zgasZarowke(),która będzie wyświetlała napis: „Żarówkazgaszona”;
c) rozjasnijZarowke()która będzie wyświetlała napis: „Żarówkarozjaśniona”;
d) przyciemnijZarowke()która będzie wyświetlała napis: „Żarówkaprzyciemniona”.

Wykonałam to w ten sposób:

 

import java.util.Scanner;
public class Zaroweczka
{

	void zapalZarowke()
	{
		System.out.println("Zarowka zapalona");
	}
	void zgasZarowke()
	{
		System.out.println("Zarowka zgaszona");
	}
	void rozjasnijZarowke()
	{
		System.out.println("Zarowka rozjasniona");
	}
	void przyciemnijZarowke()
	{
		System.out.println("Zarowka przyciemniona");
	}
	public static void main(String[] args) 
	{
		Scanner in = new Scanner(System.in);
		Zaroweczka.zapalZarowke();
		Zaroweczka.zgasZarowke();
		Zaroweczka.rozjasnijZarowke();
		Zaroweczka.przyciemnijZarowke();
	}
}

Błąd wyświetla dopiero od linijki Scanner in, który mówi:
Cannot make a static reference to the non-static method zapalZarowke() from the type Zaroweczka

Byłabym bardzo wdzięczna za pomoc. :)

EDIT: Wyjaśnione. Dziękuję wszystkim za pomoc. :)
 

komentarz 23 czerwca 2020 przez vivianne.becker Nowicjusz (100 p.)
Mam pytanie. Czy praca jako programista jest ciężką ? Chciałbym iść na kurs.

5 odpowiedzi

+2 głosów
odpowiedź 26 marca 2019 przez k222 Nałogowiec (30,150 p.)
wybrane 26 marca 2019 przez gorgonkowa
 
Najlepsza

Problem w tym, że wywołujesz metody na rzecz klasy nazwa_klasy.nazwa_metody(), u ciebie:

        Zaroweczka.zapalZarowke();
        Zaroweczka.zgasZarowke();
        Zaroweczka.rozjasnijZarowke();
        Zaroweczka.przyciemnijZarowke();

oczywiście tak można, ale to się nazywają metody statyczne i trzeba wtedy w definicji metody dodać słowo static

    static void zapalZarowke()
    {
        System.out.println("Zarowka zapalona");
    }
    static void zgasZarowke()
    {
        System.out.println("Zarowka zgaszona");
    }
    static void rozjasnijZarowke()
    {
        System.out.println("Zarowka rozjasniona");
    }
    static void przyciemnijZarowke()
    {
        System.out.println("Zarowka przyciemniona");
    }

w obecnej postaci też możesz używać tych metod, ale nie na rzecz klasy, a dla jej obiektu, tak jak tutaj:

import java.util.Scanner;
public class Zaroweczka
{

    void zapalZarowke()
    {
        System.out.println("Zarowka zapalona");
    }
    void zgasZarowke()
    {
        System.out.println("Zarowka zgaszona");
    }
    void rozjasnijZarowke()
    {
        System.out.println("Zarowka rozjasniona");
    }
    void przyciemnijZarowke()
    {
        System.out.println("Zarowka przyciemniona");
    }
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        Zaroweczka z = new Zaroweczka();
        z.zapalZarowke();
        z.zgasZarowke();
        z.rozjasnijZarowke();
        z.przyciemnijZarowke();
    }
}

 

komentarz 26 marca 2019 przez gorgonkowa Obywatel (1,810 p.)
Chyba najlepiej zobrazowałeś to, czego nie wiedziałam, bardzo dziękuję za pomoc. :)
0 głosów
odpowiedź 26 marca 2019 przez Velta Maniak (52,010 p.)

Uczyń swoje metody statycznymi:

static void SomeMethod()
{
    // do the magic here
}

 

komentarz 26 marca 2019 przez plucins Stary wyjadacz (11,110 p.)
Nie jest to dobre rozwiązanie z punktu widzenia OOP i czystego kodu.
0 głosów
odpowiedź 26 marca 2019 przez plucins Stary wyjadacz (11,110 p.)
Nie tworzysz instancji obiektu Zaroweczka. Odwołujesz się do metod jakby były statyczne.
0 głosów
odpowiedź 26 marca 2019 przez intoksynator Gaduła (3,450 p.)
Co tu jest obiektem mi powiedzcie, bo rozumiem klasa, metoda, ale co tu jest obiektem ?
komentarz 26 marca 2019 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
import java.util.Scanner;
public class Zaroweczka
{
 
    void zapalZarowke()
    {
        System.out.println("Zarowka zapalona");
    }
    void zgasZarowke()
    {
        System.out.println("Zarowka zgaszona");
    }
    void rozjasnijZarowke()
    {
        System.out.println("Zarowka rozjasniona");
    }
    void przyciemnijZarowke()
    {
        System.out.println("Zarowka przyciemniona");
    }
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        Zaroweczka z = new Zaroweczka(); // w tym misjcu tworzymy obiekt klasy Zaroweczka o nazwie z 
        z.zapalZarowke();
        z.zgasZarowke();
        z.rozjasnijZarowke();
        z.przyciemnijZarowke();
    }
}

Bodajrze w 24. linijce dodalem komentarz w ktorym wskazuje co jest obiektem i w ktorym momencie sie tworzy. Dodatkowo pozniej obiekt "z" jest wykorzystywany do wywolania konkretnych metod np zgasZarowke(). Gdyby nie bylo polecenia tworzenia obiektu "Zaroweczka z = new Zaroweczka();" nie moglbys pozniej wywolac metod obiektu.

0 głosów
odpowiedź 26 marca 2019 przez Arkadiusz Fajdek Dyskutant (9,450 p.)

Hej! Taka troche mikro reklama, jakiś czas temu zacząłem prowadzic bloga na którym piszę typowo o podstawach podstawach jeśli chodzi o programowanie Javie, myślę że możesz znaleźć sporo przydatnych informacji.
Tutaj masz link do konkretnego wpisu o klasach i obiektach: https://technologicznasowa.pl/pakiety-klasy-obiekty-oraz-podstawowe-typy-danych/

Podobne pytania

0 głosów
3 odpowiedzi 955 wizyt
0 głosów
1 odpowiedź 1,739 wizyt
0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 28 grudnia 2016 w Java przez SebekMakaron Obywatel (1,290 p.)

92,555 zapytań

141,402 odpowiedzi

319,538 komentarzy

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

...