Problemcic- JAVA

Lakisa123

Početnik
Poruka
14
Vezbam malo nasledjivanje i naidjem na ovaj primer iz knjige..Koliko sam ja ranije shvatio, kompajler trazi metodu main prvo u glavnoj public klasi, cije je ime isto kao i ime fajla.. medjutim, kad to pokusam sa kodom ispod, javalja mi se greska koja kaze da ne pronalazi main metodu u klasi Cistac (to kada je main metoda pod komentarom tj kad je izbacim iz programa, u suprotnom na izlaz izbaci samo rezultat za Cistac, za Deterdzent nista) Error: Main method not found in class Cistac, please define the main method as: public static void main(String[] args)..



Kod:
//Vezba/Deterdzent.java

class Cistac{
	private String s="Cistac";
	public void dodaj(String a) {
		s+=a;
	}
	public void razredi() {
		dodaj(" razredi()");
	}
	public void sipaj() {
		dodaj(" sipaj()");
	}
	public void ribaj() {
		dodaj(" ribaj()");
	}
	public String toString() {
		return s;
	}
	/*public static void main(String args[]) {
		Cistac x=new Cistac();
		x.razredi(); x.sipaj(); x.ribaj();
		System.out.println(x);
			
	}
	*/
}
public class Deterdzent extends Cistac{
	//Promeni metodu
	public void ribaj() {
		dodaj(" Deterdzent.ribaj()");
		super.ribaj();
	}
	//Dodaj novu metodu klasi
	public void zapeni() {
		dodaj(" zapeni()");
	}
	//Testira novu klasu
	public static void main(String args[]) {
		Deterdzent x=new Deterdzent();
		x.razredi();
		x.sipaj();
		x.ribaj();
		x.zapeni();
		System.out.println(x);
		// System.out.println("Testiranje osnovne klase");
		// Cistac.main(args);
	}
	
}

Ispis na ekranu ( u knjizi):

Cistac razredi() sipaj() Deterdzent.ribaj() ribaj() zapeni()
Testiranje osnovne klase:
Cistac razredi() sipaj() ribaj()

Kada stavim klasu Cistac za public i promenim sam naziv fajla po njoj, a zatim pozovem klasu Deterdzent.main(args) program daje ispis na ekranu, naravno suprotnim redosledom. (Da li glavna public klasa mora da bude i osnovna) ?
E sad, po ovome, kompajler prvo obradi metodu main u klasi Deterdzent, a zatim pozivom Cistac.main(args); prelazi i na osnovnu klasu.. moje pitanje je da li su u kasnijim verzijama Jave promenili nesto ili ?
Hvala :)
 
Poslednja izmena:
Мени сад баш и није јасно како је дошло до овога тј. како је "од комарца дошло до магарца" :D

Углавном, уколико нема посебног разлога да структура кода изгледа баш овако, некако је лепше да се свака класа чува у засебном фајлу.
Компајлер је свакако изгенерисао два .class фајла за сваку класу посебно. А и у посебним фајловима не би долазило до оваквих конфликата са мејн методима.
Ово је моје лично мишљење, чак и када бих морао овако, вероватно бих имао само један мејн у главној класи, а у њему инстацирао објекат друге класе и користио њене функционалности.
Main метод служи за покретање програма и један је сасвим довољан неважно у којој се класи налази, јер је статички па се истанце класе не односе на њега.
Надам се да сам ти бар малоо помогао.
 

Back
Top