Как говорится в сообщении об ошибке, вы пытаетесь добавить int
(integer
) и My_class
(new_integer
).Вы не можете этого сделать.
Если вы хотите использовать поле integer
из new_integer
, вам необходимо получить к нему доступ явно:
return integer + new_integer.integer;
// -------------------------^^^^^^^^
(Вероятно, лучше всего переименоватьПараметр new_integer
указывает на то, что это не означает, что это int
, поскольку это не так, это экземпляр My_class
.)
Выше приведено int
, поэтому метод будетбыть:
public int add(My_class new_integer) {
// ----^^^
return integer + new_integer.integer;
}
Если вы хотите сохранить My_class
возвращаемое значение add
, вам нужно создать My_class
экземпляр:
public My_class add(My_class new_integer) {
return new My_class(integer + new_integer.integer);
// ----^^^^^^^^^^^^^-----------------------------^
}
Сторонапримечание: я также настоятельно рекомендую всегда использовать this.
при доступе к членам экземпляра класса, поэтому:
return this.integer + new_integer.integer;
// ----^^^^^
Это вопрос стиля (компилятор Java будет выводить this.
, где это необходимо), но IMHOэто улучшает ясность, поскольку integer
само по себе может быть локальной переменной, именем класса (хотя, мы надеемся, нет), статическим членом, ...
Примечание 2: Хотя вы можете сделатьЧто бы вы ни хотели в своем собственном коде, подавляющее соглашение (также официальное, PDF ) заключается в использовании смешанного регистра сзаглавная буква, начинающаяся с каждого слова, поэтому MyClass
вместо My_class
.