Wywoływanie konstruktora w konstruktorze za pomocą this;

Wywoływanie konstruktora w konstruktorze za pomocą this;
  • Rejestracja: dni
  • Ostatnio: dni
0

Treść zadania z książki Bruce Eckel'a:
"Napisz klasę z dwoma przeciążonymi konstruktorami. Stosując this, wywołaj drugi konstruktor z wnętrza pierwszego."
Próbowałem ale jakkolwiek bym tego nie zrobił wyskakuje mi błąd.
W jaki sposób mógłbym użyć this; w tym kodzie aby działał?

Kopiuj
class Con{
	Con(String s, int i){
	Con(i);
	System.out.println(s + i);
		}
	Con(int i){
    i++;
	}
}
public class ExerciseTwoOverloaded {
public static void main(String[] args){
	int i = 10;
	String s = "liczba:";
	Con(s, i);
}
}
//
Atlas500
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 82
0
Kopiuj
class Con{
	Con(String s, int i){
		this(i);
		System.out.println(s + i);
    }
	
	Con(int i){
		i++;
	}
}
public class Test {
	public static void main(String[] args){
		int i = 10;
		String s = "liczba:";
	    new Con(s, i);
	}
}

tyle, że "i++" de facto nic nie robi, bo w Javie argumenty są przekazywane przez wartość.

  • Rejestracja: dni
  • Ostatnio: dni
0

Zmieniłem na coś takiego, nie wiem jaki będzie wynik, bo nie chcę mi skompilować.

Kopiuj
class Con{
	Con(String s, int i){
	this(i);
	System.out.println(s + i);
	}
	Con(int i){
	i=10;
}}
public class ExTwoOverloaded {
public static void main(String[] args){
	new Con("Liczba", 9);
}
}
//

Wyskakuje mi komunikat "Description Resource Path Location Type
A class file was not written. The project may be inconsistent, if so try refreshing this project and building it ExTwoOverloaded.java /ExerciseTwoOverloaded/src Unknown Java Problem".
To samo z twoim kodem.

Atlas500
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 82
0

O dziwo mi też coś takiego wyskoczyło. Cleaning nie pomógł. Znalazłem to:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=123322
Choć nie do końca pasuje do naszej sytuacji - tam problemem ponoć były zbyt długie nazwy klas lub metod. Ma ktoś jakieś pomysły co może być przyczyną, albo jak to rozwiązać, oprócz, oczywiście przeniesienia drugiej klasy do oddzielnego pliku?

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1

Pewnie nie wolno Wam tworzyć klasy o nazwie Con:
http://www.coderanch.com/t/384438/java/java/create-class-Con

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.