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();
}
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 );
}
/**
* 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; // ==> 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();
}
}