Dziedziczenie bez słówka extends

0

Mam dwie klasy:

public class Dziedziczenie 
{

	private String kolor;
	private boolean wypelnienie;
	
	public Dziedziczenie()
	{
		this("czerwony", false);
	}
	
	public Dziedziczenie(String k, boolean w)
	{
		kolor = k;
		wypelnienie = w;
	}
	
	public String toString()
	{
		return kolor + " " + wypelnienie;
		
	}
	public static void main(String[] args) 
	{
		
		Dziedziczenie dziedziczenie = new Dziedziczenie();
		System.out.println(dziedziczenie);
	}

} 
public class Test
{
 
    String kolor;
    boolean wypelnienie;
 
    public Test()
    {
        this("biały", false);
    }
 
    public Test(String k, boolean w)
    {
        kolor = k;
        wypelnienie = w;
    }
    

 
    public static void main(String[] args) 
    {
 
        Dziedziczenie test = new Dziedziczenie();
        System.out.println(test);
    }
 
} 

Jak to jest możliwe, że w klasie Test mogę użyć metody toString() z klasy Dziedziczenie bez używania słówka extends?

0

Ale w czym problem? kod nie ma nic wspólnego z dziedziczeniem, wywołujesz po prostu nadpisaną metodę z klasy... która dziedziczny po klasie Object

0

Wywołana jest metoda toString() obiektu klasy Dziedziczenie który stworzyłeś. Co w tym dziwnego?

0

Przerabiam obecnie dziedziczenie i mam w przykładzie podobny kod ale w klasie (w moim przypadku) Test jest dopisane extends Dziedziczenie.
Z ciekawości sprawdziłem czy zadziała bez tego i zadziałało...
W związku z tym po co używa się słówka extends, skoro mam dostęp do metod innej klasy bez tego?

0

Słówka extends jak już wcześniej zauważyłeś używa się do dziedziczenia. A po co jest dziedziczenie możesz przeczytać np tutaj: http://pl.wikipedia.org/wiki/Dziedziczenie_%28programowanie%29

1

Każda klasa dziedziczy po klasie Object, a toString() to metoda właśnie klasy Object, właśnie dlatego możesz jej używać. W twojej klasie Dziedziczenie nadpisujesz tą metodę (czyli zmieniasz jej definicję).

0
szweszwe napisał(a):

Słówka extends jak już wcześniej zauważyłeś używa się do dziedziczenia. A po co jest dziedziczenie możesz przeczytać np tutaj: http://pl.wikipedia.org/wiki/Dziedziczenie_%28programowanie%29

To np. czego nie mogę użyć z klasy Dziedziczenie w klasie Test bez użycia słówka extends? Myślałem, że bez tego nie będę miał nawet dostępu do metod, w tym do toString.

1

@rubesom wklep w google hasło "Dziedziczenie i kompozycja"

1

autor albo trolluje albo nie wiem co

W innym temacie ma problem ze zrozumieniem czym jest konstruktor (myśli że to specjalny twór który pozwala na zapamiętywanie danych do wyświetlenia w .toString), teraz mimo że nie zrozumiał czym jest konstruktor to już idzie w dziedziczenie i w dodatku myśli że dziedziczenie to coś w rodzaju operatora friend pozwalającego na korzystanie z cudzych metod...

Autorze - nie chcę zniechęcać, ale programowanie nie jest dla każdego, a Twój tok rozumowania jest dość... specyficzny

  1. Nie przepisuj kodu z książki, tylko pisz własny i analizuj jak działa
  2. Zmień może książkę lub kurs jeśli obecny jest dla Ciebie napisany niezrozumiałym językiem
  3. Zwolnij z nauką, zostaw na razie dziedziczenie dopóki nie zrozumiesz prostszych mechanizmów

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