Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Métodos Java

Olá, boa noite!

Galera, realmente me deu um branco e não estou conseguindo relembrar. Então venho aqui para vocês (se possível), tirarem minha dúvida.

Agradeço desde já!

É o seguinte, quando criamos uma var em private criaremos também getters e setters para se trabalhar com a mesma.

Assim quando outra Class irá utilizar essa var, fica somente a merce dos setters e getters. Até ai tranquilo.

Já na criação de métodos, é o onde está o problema. Criarei um método a baixo para exemplo, assim como Class, e var's.

Código:

public Class Conta{
private String nome;
}
public Class ContaPoupanca extends Conta{
    public void static main(String[] args){

        public ContaPoupanca(String nome){
            super.getNome() = nome;    
        }
    }
}

Seria assim que eu deveria fazer? Porque mesmo trocando o get para setNome(), ainda da erro de compilação.

Só consigo ter algum êxito quando mudo a variável da Class conta para protect e passo a utilizar somente super.nome = nome; no método.

É isso, se puderem me esclarecer eu agradeceria muito!

Uma boa noite.

5 respostas

Allan boa noite. Estou vendo que você esta usando o metodo public static void main(String[] args) {} Então creio eu que você está fazendo um teste, Cara lembra que você já tem um metodo que é o seu get e o seu setter? acho desncessário criar um outro metodo para setar o seu nome. Bom vamos por parte, olha o seu código.

public Class ContaPoupanca extends Conta{
    public void static main(String[] args){

        public ContaPoupanca(String nome){
            super.getNome() = nome;    
        }
    }
}

Está vendo o seu método

 public void static main(String[] args) {}

O correto é

 public static void  main(String[] args) {}

E ta vendo que você está criando esse metodo na sua Classe contaPoupanca? Faz assim criar um outro pacote com uma classe de teste, ou até mesmo pode criar apenas uma outra classe no mesmo pacote que você está ultilizando. Quando você criar uma outra classe.

public Class ContaPoupancaTeste {
    public static void main(String[] args) {
    ContaPoupanca contaP = new ContaPoupanca(); // estamos criando um objeto do tipo contaPoupanca, e podemos trabalhar com a variavel criada.

Lembra do seu metodo get e do metodo setter? pois então agora é só você usar eles. Lembrando que a sua classe ContaPoupanca está herdando da Classe Conta né? então todos os metodos que tiverem na sua classe Conta vai ter na sua ContaPoupanca, Então agora só falta você settar o nome com o metodo setter.

public Class ContaPoupancaTeste {
    public static void main(String[] args) {
        ContaPoupanca contaP = new ContaPoupanca();
        contaP.setNome("Pedro dos Santos"); // agora sua variavel nome está sendo setada com uma string, que seria um nome.
System.out.println("Nome: " + contaP.getNome());
//aqui está trazendo o resultado da sua variavel.    
    }
}

e só um lembrete nunca usamos o metodo get para tentar passar um valor para a variavel, get serve sempre para nos retornar um valor, se quisermos passar um valor para a variavel usamos o set.

Na realidade vc esqueceu de fazer os métodos setNome e getNome.

Com o modificador private apenas dentro da própria classe se tem acesso ao atributo ou ao método. Com o modificador protected você pode ter acesso aos atributos e métodos da classe se estiver no mesmo pacote ou se herdar da classe.

Então você apenas precisa fazer a sua classe Conta da seguinte forma:

public class Conta{

private String nome;

public void setNome(String nome){
    this.nome = nome;
}

public String getNome(){
    return this.nome;
}

Fazendo isto você terá acesso aos métodos setNome e getNome de dentro da Classe ContaPoupanca que herda de Conta.

Felicidades.

E se você estiver usando construtor igual está usando você pode passar desse jeito.

public class Conta {

    private String nome;

    public Conta(String nome) {
        this.nome = nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}
public class ContaPoupanca extends Conta{

    public ContaPoupanca(String nome) {
        super(nome);
    }

}
public class TestaConta {
    public static void main(String[] args) {

        ContaPoupanca contaP = new ContaPoupanca("Lucas");

        System.out.println("Nome: " + contaP.getNome());
    }
}

Vai da sua escolha com construtor ou sem construtor abraços

Luiz, no meu código original tenho os getters e setters. Os códigos acima foram só um exemplo para demonstrar minha dúvida.

E Allison, obrigado por corrigir os erros, mas, no Eclipse está correto, é que eu fiz na mão e estava meio sonolento, peço desculpas.

Mas, a questão é quando coloco o nome em private, somente a mesma classe pode acessa-lo. Ainda herdando da classe Conta, eu obtenho os getters and setters.

A dúvida é o seguinte: quando crio um método e quero acessar o nome, utilizarei getters e setters.

Só que, quando estou fazendo o construtor


        public ContaPoupanca(String nome){
            super.nome  = nome;    
        }

ele não me deixa acessar o nome pois está privado. Mas mesmo utilizando:

        public ContaPoupanca(String nome){
            super.getNome()  = nome;    
        }

ou

        public ContaPoupanca(String nome){
            super.setNome()  = nome;    
        }

ocorre um erro. E eu tenho que mudar a variável para protected e utilizar o construtor assim:

        public ContaPoupanca(String nome){
            super.nome  = nome;    
        }

Ah questão é que não quero mudar para protected, e também entender porque está dando erro.

Agradeço, e peço desculpas a falta de código acima e erros bobos. Espero que tenham entendido qual é realmente a dúvida.

Uma boa tarde!

solução!

Allan você quer usar o construtor e inicializar o nome pelo construtor então? Pode deixar os seus atributos privados mesmo, a questão é só fazer o construtor assim.

public class ContaPoupanca extends Conta{

    public ContaPoupanca(String nome) {
        super(nome);
    }

}

E depois para settar esse nome.

public class TestaConta {
    public static void main(String[] args) {

        ContaPoupanca contaP = new ContaPoupanca("Lucas"); // aqui você ta chamando o construtor com um nome já. Então você ja settou a variavel nome mesmo ela sendo private
}
}