Вызов методов с проблемами объектов - PullRequest
0 голосов
/ 31 января 2019

Итак, мне нужно сделать это для части моей домашней работы:

Создать метод в классе Customer с именем hasMoreMoneyThan(Customer c), который возвращает true, если клиент, вызывающий метод, имеет больше денег, чем клиентc, в противном случае он должен вернуть false.

Я ищу указание в правильном направлении для строки, которая говорит: "клиент вызывает метод"

Это очень запутаннодля меня и не имеет смысла, это мой Customer класс.

Вот необходимый код:

public class Customer
{ 
    private String name;
    private int age;
    private float money;

    public String getName()
    {
        return name;
    }

    public int getAge()
    {
        return age;
    }


    public Customer(String n, int a, float m)
    {
        name = n;
        age = a;
        money = m;

   }

Я начал писать метод:

public boolean hasMoreMoneyThan(Customer c)
{

}

Но я не уверен, как вызвать это с моим Customer объектом(который я думаю, что вопрос задает.

Другой соответствующий код:

public class StoreTestProgram {

    public static void main(String args[]) {
        Customer[]    result;
        Store         walmart;

        walmart = new Store("Walmart off Innes");
        walmart.addCustomer(new Customer("Amie", 14, 100));

    }
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Когда метод вызывается для объекта, переменные объекта находятся в текущей области видимости.В этом случае «клиент, вызывающий метод» - это объект, к которому вызывается метод (объект является экземпляром класса).

Итак, если boolean hasMoreMoneyThan(Customer c) вызывается на Customer a, тогда вы должны думать об этом как о Customer a has more money than Customer c?.

. Вы можете использовать ключевое слово this для ссылки на текущий объект (чтобы помочь читателю отличаться от Customer c).

Таким образом, в вашем методе hasMoreMoneyThan вы можете сравнить this.money с c.money.

И чтобы вызвать этот метод, вам нужна ссылка на текущего клиента и клиента, с которым вы хотите сравнить.Вы можете сделать что-то вроде:

Customer currentCustomer = new Customer(...
Customer customerToCompareWith = new Customer(...

if (currentCustomer.hasMoreMoneyThan(customerToCompareWith)) {
    // do something
}

Редактировать Давайте попробуем другой пример.Допустим, вы хотите, чтобы метод знал, является ли клиент старше другого клиента.Этот код может выглядеть так:

public boolean isOlderThan(Customer c) {
    return this.age > c.age;
}

И для вызова метода:

if (currentCustomer.isOlderThan(customerToCompareWith)) {
    // the current customer is older
} else {
    // the current customer is not older
}
0 голосов
/ 31 января 2019

this - это то, как вы ссылаетесь на объект из методов, которые являются членами объекта.this.money ><=? c.money если бы в своем конструкторе вы использовали public Customer(String name, int age, float money), вы бы использовали this.name= name вместо name= n для устранения неоднозначности.

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