Как правильно использовать Getter в этой ситуации - PullRequest
1 голос
/ 15 апреля 2019

Я весь день искал решение этой проблемы, но, прежде всего, я хочу сказать, что я совершенно новичок в java и объектной ориентации, поэтому, пожалуйста, будьте осторожны со мной

Тогда вот код, который я сделал до сих пор

Основной класс

package br.edu.fatecmm.study;

public class Main {

    public static void main(String[] args) {

        Pessoa ppl = new Pessoa();
        Conta gamer = new Conta();

        gamer.setLogin("kouhei");
        gamer.setPassword("mypass");

        ppl.setNome("Qualquer");
        ppl.setSobrenome("Nome");
        ppl.setJogador(gamer);

        ppl.imprimePessoa();
        gamer.imprimeConta();

    }
}

Пессоа Класс

package br.edu.fatecmm.study;

public class Pessoa {
    private String nome, sobrenome;
    private Conta jogador;

    public void imprimePessoa(){
        System.out.println("nome = " + nome);
        System.out.println("sobrenome = " + sobrenome);
        System.out.println("jogador = " + jogador.toString());
        System.out.println(" ");
    }

    public String getNome() {
        return nome;
    }

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

    public String getSobrenome() {
        return sobrenome;
    }

    public void setSobrenome(String sobrenome) {
        this.sobrenome = sobrenome;
    }

    public Conta getJogador() {
        return jogador;
    }

    public void setJogador(Conta jogador) {
        this.jogador = jogador;
    }
}

Conta Class

package br.edu.fatecmm.study;

public class Conta {
    private String login, password;

    public void imprimeConta(){
        System.out.println("login = " + login);
        System.out.println("password = " + password);
        System.out.println(" ");
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

Итак, что происходит, когда я запускаю код, описанный выше, это:

"C:\Program Files\Java\jdk-11.0.2\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3.4\lib\idea_rt.jar=49901:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Kouhei\IdeaProjects\Study\out\production\Study br.edu.fatecmm.study.Main
nome = Qualquer
sobrenome = Nome
jogador = br.edu.fatecmm.study.Conta@3498ed
 
login = kouhei
password = mypass
 

Process finished with exit code 0

В основном, что я хочу сделать, это когда я звоню ppl.imprimePessoa ();

Он должен вернуть nome + sobrenome, что соответственно равно "Qualquer" и "Nome", а затем вернуть jogador, который ДОЛЖЕН быть "kouhei" и "mypass", однако вместо возврата kouhei и mypass я получаю "br" .edu.fatecmm.study.Conta @ 3498ed "

Я думаю, что 3498ed находится в состоянии памяти, но я не уверен, может быть, я говорю что-то совершенно глупое, но я даже не знаю, что искать, чтобы изучить об этом

Я пытался читать о Getter и Setters, но ничего не помогает

Я также хочу иметь возможность получать не только "kouhei / mypass" при вызове ppl.imprimePessoa ();

Но я также хотел бы иметь возможность получить только "kouhei", например

Я пробовал это

ppl.setJogador(gamer.getLogin());

но это не работает

Я часами пробовал много разных методов, а также видел кое-что об экземплярах, но не смог заставить его работать

Заранее спасибо

1 Ответ

0 голосов
/ 15 апреля 2019

Когда вы вызываете значение по умолчанию toString(), то возвращается строковое представление объекта.

Как объясняется в документации Java: https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

Если вы хотите использовать toString, вы должны переопределить его в классе Conta, например, так:

@Override
public String toString(){
    return "login = " + login + "password = " + password;
}

Другая возможность, если вам неудобно переопределять метод по умолчанию (хотя в действительности это не проблема), это создатьновый метод, который возвращает строку в классе Conta.Например:

public String jogadorString(){
    return "login = " + login + "password = " + password;
}

и использовать его в классе Pessoa как jogador.jogadorString() вместо jogador.toString().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...