Projeto de pacotes.... dúvidas para ler atributos

1 resposta
A

Ola pessoal, minha duvida eh a seguinte…
Tenho a seguinte estrutura de diretórios…para treinar acessos com pacotes:

br.edu.treinando
 + client
 + server

…dentro de br.edu.treinamento tenho o programa TestaServerClient.java
que tem por objetivo instaciar classes dentro de client e server para
testar os modificadores java:

import server.*;
import client.*;

class TestaServerClient {


	public static void main(String[] args) {
		SubClasse_B sbc = new SubClasse_B();
		Client_A ca = new Client_A();
	}
}

…dentro de client tenho o programa Client_A.java que vai acessar um
membro público da Classe_A que está em server:

package client;

import server.Classe_A;

// Classe deve ser pública.
public class Client_A {
		// Construtor deve ser público.
		public void Client_A(){
			System.out.println("No pacote client..classe Client_A...");
			System.out.println(Classe_A.publ);
		}
}

…e dentro do server tenho as seguintes classes Classe_A e SubClasse_B que
estão funcionando perfeitamente.

package server;

public class Classe_A {
	
	// Cria vários tipos de acessos.
	private   String priv = "String privada";
	protected String prot = "String protegida";
	public    String publ = "String public";
		  String defa = "String Default";

	// Construtor padrão da Classe_A.
	Classe_A(){
		System.out.println("Classe_A : "+priv);
	}
}

… e a SubClasse_B com relacionamento de herança:

package server;

// Classe deve ser pública.
public class SubClasse_B extends Classe_A {

	// Construtor deve ser público.
	public SubClasse_B(){
		//System.out.println(super.priv); // ERRO!
		System.out.println("Na SubClasse_B...");
		System.out.println(super.prot);
		System.out.println(super.publ);
		System.out.println(super.defa);
	}
}

Gente, meu problema é que o programa funciona perfeitamente, mas não estou conseguindo
acessar o membro público da Classe_A do pacote server.

Alguem ai poderia me dar uma ajuda?

Lembrando que ja compilei usando o comando:

set CLASSPATH=.;%JAVA_HOME%;c:\br.edu.treinando

C:\br.edu.treinando&gtjavac TestaServerClient.java
.\client\Client_A.java:10: non-static variable publ cannot be referenced from a
static context
                        System.out.println(Classe_A.publ);
                                                   ^
1 error

Acho que vcs já perceberam o problema aqui…
é tentar acessar a variável publ do tipo public…
que coisa, isso como público não era pra ser visível normalmente?
E outra coisa, não posso deixar com static pois perde-se o objetivo da variável.
Quem puder ajudar dá um grito ae!

Thanks!

1 Resposta

lrocha

1º - Você esta tentando criar um método contrutor com algum tipo de retorno…Os métodos contrutores não podem ter nenhum tipo de retorno nem mesmo void.
A maneira certa de se criar um contrutor é public metodoConstrutor(...) {}ou private metodoConstrutor(...){} ou protected metodoConstrutor(...){}.
2º - Tente sempre criar atributos privados…e se desejar acessar ele em outra classe ou alterar, crie os métodos sets, e gets dos atributos…
3º - Quando você não colocar operadores de acesso(public, private, protected) o JDK ira colocalo como default, e você so ira conseguir acessar este método dentro do mesmo pacote da classe.

Acho que se você seguir estes passos, vai dar certo…
Qualquer coisa, estamos ai…

Criado 3 de maio de 2007
Ultima resposta 3 de mai. de 2007
Respostas 1
Participantes 2