Wywoływanie konstruktora domyślnego

0
public class Dziedziczenie 
{

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

} 

Myślałem, że wszystko będzie działać - wyświetli mi domyślny konstruktor a tak się nie dzieje. Dopiero jak odwołam się w ten sposób to działa:

System.out.println(dziedziczenie.kolor); 

Dlaczego nie działa z powyższym kodem, co robię źle?

0

konstruktor nic przecież u Ciebie nie wyświetla o.O
poza tym konstruktor jest wywoływany już przy tworzeniu obiektu (ta linijka z new)

1

zrób sobie Override na toString() i tam wyświetl kolor, a wtedy Ci się uda. Oczywiście pod warunkiem że najpierw ten kolor przekażesz w argumentach konstruktora.

0
zadroozyn napisał(a):

konstruktor nic przecież u Ciebie nie wyświetla o.O
poza tym konstruktor jest wywoływany już przy tworzeniu obiektu (ta linijka z new)

A to nie jest konstruktor domyślny?

    public Dziedziczenie()
    {
        this("czerwony", false);
    } 

Przekazałem potem zmienną obiektową do metody, która ma mi go wyświetlić, stąd myślałem, że będzie działać.

Oglądam już nie jeden poradnik z javą ale jak chcę zrobić coś sam nie trzymając się sztywno tego co napisał ktoś inny to zawsze wychodzą mi jakieś głupoty.
Myślałem, że jak zrobię w ten sposób, czyli moim tokiem myślenia wystarczy operator new, konstruktor i przekazując zmienną obiektową do metody uda mi się wyświetlić domyślny konstruktor.

Metodą toString działa, dzięki.

0

Tak, to jest konstruktor domyślny. Jeśli stworzysz obiekt przez

Dziedziczenie dziedziczenie = new Dziedziczenie();

To w println dostaniesz kolor "czerwony".

Ale jak zrobisz to w sposób taki

Dziedziczenie dziedziczenie = new Dziedziczenie("zielony", false);

to konstruktor domyślny jest pomijany.

0

Co to znaczy według autora "wyświetlić konstruktor domyślny"?
Patrząc na kod i spostrzeżenia z pierwszego postu, mam wrażenie że ma jakieś mylne pojęcie o czymś i myśli o jakimś magicznym działaniu programu (typu konstruktor domyślny = dane do serializacji przy wyświetlaniu)

0

Zwrot "wyświetlić konstruktor" jest bez sensu, wyświetlić można obiekt utworzony konstruktorem.
Poza tym, w tym poście nigdzie nie ma "konstruktora domyślnego", kod

Dziedziczenie dziedziczenie = new Dziedziczenie(...);

korzysta z jawnie wskazanego konstruktora. Konstruktor domyślny (bezargumentowy) występuje np. w takiej konstrukcji

<jsp:useBean id="counter" class="beans.CountingBean" scope="session">
</jsp:useBean>
0

Tu masz przykład jak zaimplementować "toString":

http://www.javapractices.com/topic/TopicAction.do?Id=55

Wyświetlenie możesz wtedy pozostawić bez zmian.

0
bogdans napisał(a):

Zwrot "wyświetlić konstruktor" jest bez sensu, wyświetlić można obiekt utworzony konstruktorem.
Poza tym, w tym poście nigdzie nie ma "konstruktora domyślnego", kod

Dziedziczenie dziedziczenie = new Dziedziczenie(...);

korzysta z jawnie wskazanego konstruktora.

Chodziło mi o to, że ten kod:

        Dziedziczenie dziedziczenie = new Dziedziczenie();
        System.out.println(dziedziczenie); 

Pozwoli mi na wyświetlenie obiektu z parametrami z konstruktora:

    public Dziedziczenie()
    {
        this("czerwony", false);
    } 

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