2014-09-10 4 views
0

Я новичок в Java и ООП, и мне нужна была бы помощь с пониманием нескольких вещей. Скажем, у вас есть следующий класс:Модификаторы доступа

public class NewClass { 
    private long time; 

    public NewClass() { 
     time = 0; 
    } 

    public NewClass (long time) { 
     this.time = time; 
    } 

    public long GetAsMs() { 
     return time; 
    } 

    public boolean isGreaterThan(NewClass span) { 
     return GetAsMs() > span.GetAsMs(); 
    } 

Я знаю, что если я делаю новый экземпляр этого класса у меня будет объект, содержащий поля/переменные time и связанные с ними методы. Я не понимаю, что именно делает метод isGreaterThan и как его называть. Разве эти две «переменные», которые он сравнивает, всегда одинаковы?

ответ

2

Они могут быть разными, обратите внимание на конструктор, который принимает параметр:

public NewClass (long time) { 
     this.time = time; 
} 

Если построить два объекта:

NewClass xObj = new NewClass(12345678910); 
NewClass yObj = new NewClass(12345678919); 

Теперь xObj.isGreaterThan(yObj) будет возвращать false. Зачем? Давайте посмотрим, что там происходит:

isGreaterThan наносится на xObj объект, который имеет класс члена time, который имеет значение 12345678910. Вы проходящее yObj, который имеет свой собственный time, который имеет значение 12345678919 - И они разные , GetAsMs вернет два разных результата при применении на разных объектах.

+0

Можете ли вы привести пример с двумя экземплярами 'NewClass' и вызываемым методом' isGreaterThan'? – mostruash

Смежные вопросы