Classe

Olá pessoal, gostaria de saber o que esta acontecendo e/ou entender nessa classe mcP, pois não sei o que é: “arg” “super.arg” “getA () acho que é um metodo”.

public class mcP {
int a = 0;
mcP () { }
mcP (int arg) {
a = super.arg;}
int getA () {
return a + a;}
}

public static void main (String arguments[]){
int valor;
mcP x= new mcP(4)
valor = x.getA();
}

Agradeço a todos desde já

George S.

Onde vc pegou esse código?

A palavra chave super refere-se a superclasse. Como sua classe mcP extende Object e esta não possui o campo arg, o compilador reclama que não encontra o campo arg.

Não sei se quem escrevei esse código queria fazer referência ao objeto da classe usando this ao invés de super. Enfim, da uma olhada num código q eu estou propondo para q sua classe “funcione”.

Não se esqueça que uma classe deve por padrão iniciar com letra maiúscula.

[code]
public class mcP {

int a = 0; 
public mcP() {
} 

public mcP(int arg) { 
	a = arg;
} 

public int getA () { 
	return a + a;
} 

public static void main(String[] args) { 
	int valor;
	mcP x = new mcP(4);
	valor = x.getA();
	System.out.println( valor );
} 

}[/code]

Falow!

Olha a sua classe agora toda comentada, :smiley:

E vá estudar, :smiley:

/**
 * A classe começa aqui; como ela se chama mcP, deve ser salva em um arquivo
 * chamado mcP.java, que é exigência do compilador.
 */
public class mcP {
	
	/**
	 * Isto é um atributo; um inteiro inicializado com zero.
	 */
	int a = 0;
	
	/**
	 * Isto é um método, mas não um método qualquer; a este tipo de método
	 * damos o nome de construtor: a sua principal característica é não ter
	 * um tipo de retorno, nem mesmo void, e é o primeiro método chamado
	 * quando criamos um objeto do tipo mcP; outro detalhe importante é a
	 * obrigação de o construtor ter o mesmo nome da classe.
	 */
	mcP(){
		
	}
	
	/**
	 * Este também é um cosntrutor; não há problema em ter mais de um
	 * construtor na mesma classe, desde que estes sejam métodos diferentes
	 * um do outro; este, por exemplo, difere do outro porque recebe um
	 * parâmetro: um inteiro "apelidado" de arg.
	 */
	mcP(int arg){
		/*
		 * Nesta linha informamos que o atributo "a", que foi declarado
		 * anteriormente, recebe o valor do parâmetro "arg". Isto é uma
		 * forma de criar um objeto do tipo mcP e de imediato alterar o
		 * valor do atributo "a"; seria algo do tipo:
		 *
		 * mcP m = new mcP(23);
		 *
		 * assim, "m" seria um objeto do tipo mcP e que internamente o
		 * valor do atributo "a" deste objeto valeria 23.
		 */
		//a = super.arg; // ==&gt isto é um erro. o código não compila!
		a = arg;
	}
	
	/**
	 * Isto é um método comum, e não um construtor; dessa forma ele não tem
	 * o mesmo nome da classe e possui um tipo de retorno: neste caso ele
	 * retorna um "int".
	 */
	int getA(){
		/*
		 * Aqui é onde se resolve como arranjar um int pra retornar, :D
		 * poderíamos ter operações bem mais complexas, mas neste caso
		 * o inteiro retornado é igual ao dobro do atributo "a"; a
		 * palavra "return" é uma palavra reservada que utilizamos para
		 * indicar o retorno de algum método. 
		 */
		return a + a;
	}

	/**
	 * Aqui temos outro método especial: o main; é este tipo de método que
	 * a máquina virtual precisa para disparar o processo que se deseja
	 * executar. Diferente do Construtor, o método main deve sempre ter
	 * este formato! a única coisa que pode variar é o termo "arguments",
	 * bastando apenas que este seja um parêmetro do tipo String[].
	 */
	public static void main(String arguments[]){
		int valor;//uma variável | atributo do tipo inteiro
		mcP x= new mcP(4);//criação de um objeto | variável do tipo mcP
		/*
		 * Aqui atribuímos à variável valor o retorno do método 
		 * "getA()" presente no objeto x. Esta é a forma de se utilizar
		 * dos métodos presentes nos objetos.
		 */
		valor = x.getA();
	}
}