Wywoływanie konstruktora domyślnego

Wywoływanie konstruktora domyślnego
RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
0
Kopiuj
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:

Kopiuj
System.out.println(dziedziczenie.kolor); 

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

ZA
  • Rejestracja: dni
  • Ostatnio: dni
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)

panryz
  • Rejestracja: dni
  • Ostatnio: dni
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.

RU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 211
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?

Kopiuj
    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.

panryz
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
Dziedziczenie dziedziczenie = new Dziedziczenie();

To w println dostaniesz kolor "czerwony".

Ale jak zrobisz to w sposób taki

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

to konstruktor domyślny jest pomijany.

  • Rejestracja: dni
  • Ostatnio: dni
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)

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
Dziedziczenie dziedziczenie = new Dziedziczenie(...);

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

Kopiuj
<jsp:useBean id="counter" class="beans.CountingBean" scope="session">
</jsp:useBean>
vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
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

Kopiuj
Dziedziczenie dziedziczenie = new Dziedziczenie(...);

korzysta z jawnie wskazanego konstruktora.

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

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

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

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

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.