PDA

Visualizza la versione completa : [Java]Priblema con abstract


Luc@s
06-04-2003, 11:03
Ho questo cod:


import java.util.*;
/*
* La classe astratta di prova
*/
abstract class ATest {
abstract void saluto();
}
/*
* L'interfaccia di prova
*/
interface IProva {
int incr();
}
/*
* La classe Base che implementa IProva
*/
class Test implements IProva extends ATest {
private String nome;
public static int get_cont;
public static int set_cont;
public static int cont;

public String getNome() {
System.out.println("~~ GetNome Invocato: Chiamata " + get_cont +" ~~ \n");
get_cont++;
return nome;
}

public String setNome(String nm) {
System.out.println("~~ SetNome Invocato: Chamata " + set_cont +" ~~ \n");
this.nome = nm;
set_cont++;
return this.nome;
}

public Test() {
System.out.println("~~ Test Invocato ~~ \n");
}

public int incr() {

return cont++;
}

public void saluto() {
System.out.println("Ciao da Test\n");
}
}
/*
* La classe derivate che estende Test e implementa IProva
*/
class Test2 extends Test implements IProva {
public static int conts;

public Test2() {
System.out.println("~~ Test2 Invocato ~~ \n");
}

public int incr() {

return conts++;
}

public void saluto() {
System.out.println("Ciao da Test2\n");
}
}
/*
* La classe princ che contiene il main()
*/
class Prova {
public static void main(String[] args) {
Test ts = new Test();
Test2 tt = new Test2();
String nom = "Luca";
String nom2 = "Erica";
ts.setNome(nom);
System.out.println("Il mio nome: " + ts.getNome() + "\n");
}

}


Ma Mi da:

--------------------Configuration: sdk <Default>--------------------
C:\Progetti\Java\Prova.java:17: '{' expected
class Test implements IProva extends ATest {
^
C:\Progetti\Java\Prova.java:81: '}' expected
}
^
C:\Progetti\Java\Prova.java:17: Test should be declared abstract; it does not define incr() in Test
class Test implements IProva extends ATest {
^
C:\Progetti\Java\Prova.java:53: inner classes cannot have static declarations
public static int conts;
^
C:\Progetti\Java\Prova.java:74: non-static variable this cannot be referenced from a static context
Test2 tt = new Test2();
^
C:\Progetti\Java\Prova.java:77: cannot resolve symbol
symbol : method setNome (java.lang.String)
location: class Test
ts.setNome(nom);
^
C:\Progetti\Java\Prova.java:78: cannot resolve symbol
symbol : method getNome ()
location: class Test
System.out.println("Il mio nome: " + ts.getNome() + "\n");
^
C:\Progetti\Java\Prova.java:72: inner classes cannot have static declarations
public static void main(String[] args) {
^
8 errors

Process completed.



Why?

Zero-2
06-04-2003, 13:07
Scrivi cosė la classe Test:
class Test extends ATest implements IProva{....}

prima estendi e poi implementi

Ciauz


:ciauz:

Luc@s
06-04-2003, 13:22
hai ragione!
Come esercizio fa schifo, vero?

Zero-2
06-04-2003, 13:27
L'importante č che hai capito :D:D

Luc@s
06-04-2003, 13:28
sono pazzo!
Ekko l'esercizio finale:

//: Prova.java
import java.util.*;

/*
* La classe astratta di prova
*/
abstract class ATest {
abstract void saluto();
}
/*
* L'interfaccia di prova
*/
interface IProva {
int incr();
}
/*
* La classe Base che implementa IProva
*/
class Test extends ATest implements IProva {
private String nome;
public static int get_cont;
public static int set_cont;
public static int cont;

public String getNome() {
System.out.println("~~ GetNome Invocato: Chiamata " + get_cont +" ~~ \n");
get_cont++;
return nome;
}

public String setNome(String nm) {
System.out.println("~~ SetNome Invocato: Chamata " + set_cont +" ~~ \n");
this.nome = nm;
set_cont++;
return this.nome;
}

public Test() {
System.out.println("~~ Test Invocato ~~ \n");
}

public int incr() {
return cont++;
}

public void saluto() {
System.out.println("Ciao da Test\n");
}
}
/*
* La classe derivate che estende Test e implementa IProva
*/
class Test2 extends Test implements IProva {
public static int conts;

public Test2() {
System.out.println("~~ Test2 Invocato ~~ \n");
}

public int incr() {
return conts++;
}

public void saluto() {
System.out.println("Ciao da Test2\n");
}
}
/*
* La classe princ che contiene il main()
*/
class Prova {
public static void main(String[] args) {
Test ts = new Test();
Test2 tt = new Test2();
String nom = "Luca";
String nom2 = "Erica";
ts.setNome(nom);
System.out.println("Valore prima cont = " + ts.cont +"\n");
ts.incr();
System.out.println("Valore dopo cont = " + ts.cont +"\n");

System.out.println("Valore prima conts = " + tt.conts +"\n");
tt.incr();
System.out.println("Valore dopo conts = " + tt.conts +"\n");

System.out.println("Il mio nome: " + ts.getNome() + "\n");
System.out.println("Il mio nome: " + ts.getNome() + "\n");
}

}
//:-

Metto troppi conferme secondo te?

Zero-2
06-04-2003, 13:43
class Test extends ATest implements IProva

Potresti anche non metterlo implements IProva , dato che estendi dalla classe Test che implementa a sua volta IProva.



Metto troppi conferme secondo te?


:master: Non l'ho capita :)

Luc@s
06-04-2003, 13:46
Hai ragione, ma per sicurezza!
Cmq intendo tutti quie mess tipo System.out.println("~~ GetNome Invocato: Chiamata " + get_cont +" ~~ \n");...............che io chiamo sentinelle!

Ho fatto male a metterne cosi tante?

Zero-2
06-04-2003, 13:52
Sono il primo mezzo di debug :gren: :gren: :gren:
Spesso , dato che uso Textpad , i miei programmi sono disseminati di System.out.println() :D:D

Luc@s
06-04-2003, 13:54
Originariamente inviato da Zero-2
Sono il primo mezzo di debug :gren: :gren: :gren:
Spesso , dato che uso Textpad , i miei programmi sono disseminati di System.out.println() :D:D


Quindi dici che č utile??
Come debugger che usi tu?

Zero-2
06-04-2003, 13:58
Se devo fare programmini semplici con poche classi , uso il metodo dei System.out.println() e il TextPad , se ,invece, il programma ha molte classi uso :( JBuilder o eclipse e relativi debugger.

Loading