Что скрывается за понятием сlass в ООП? Здравствуйте. Скажите, пожалуйста, правильно ли я понимаю понятие класса в ООП?
Я понял это так: Напрямую с классом работать мы не можем, поэтому мы работаем с экземплярами класса (то есть с его объектами), которые в свою очередь имеют свойства, события и методы. У каждого объекта есть свой интерфейс который в свою очередь определяет какие запросы мы можем послать к этому объекту.
Но напрямую с объектом мы тоже не можем работать поэтому даём нашему объекту имя (то есть делаем на него ссылку указывая что созданное нами имя и есть тот самый объект). Непосредственно объект мы изменять не можем поэтому мы через оператор new создаём новый экземпляр этого объекта. С которым можем уже производить какие то действия. Light lt = new Light()
lt on();
Как я понимаю на примере этого кода. Мы имеем объект OnClickListener с которым напрямую мы работать не можем. Поэтому мы даём этому объекту имя (то есть делаем ссылку на объект), в нашем случае это btnOK. Для того чтобы нам работать с btnOK мы должны создать экземпляр этого объекта, который в свою очередь мы сможем изменять (то есть который сможет реагировать на наши запросы).
У объекта OnClickListener существует событие onClick, которое срабатывает при нажатии на кнопку. У объекта tvOut есть событие setText, которое выводит необходимый нам текст. OnClickListener btnOK = new OnClickListener() {
@Override
public void onClick(View v) {
// Меняем текст в TextView (tvOut)
tvOut.setText("Нажата кнопка ОК");
}
};
Так это понимаю я, но ведь OnClickListener - это не объект а метод. Причём тут его называют событием
А тут методом. public void butHello_Click(View v){
TextView tvHello = (TextView)findViewById(R.id.textView1);
tvHello.setText("Hello!!!");
}
В чём же тут разница?
Просьба не ругаться, а помочь разобраться, в чём моя ошибка. Мне необходимо это понять, желательно на примерах. Спасибо за помощь.

21 Авг 2019 в 07:09
165 +1
0
Ответы
1

Здравствуйте! Давайте разберем ваш вопрос.

В ООП класс - это шаблон или описание объекта, который определяет его свойства (поля), методы (действия) и события (обработчики событий). Когда мы создаем экземпляр класса, то получаем объект, который уже имеет определенные свойства и поведение, определенное в классе.

Теперь касательно вашего примера с OnClickListener. OnClickListener в Android - это интерфейс, который представляет обработчик событий нажатия на кнопку. Вы создаете анонимный класс, реализующий интерфейс OnClickListener, и внутри этого класса определяете метод onClick, который будет исполнен при нажатии на кнопку. Таким образом, вы объявляете и определяете обработчик события через анонимный класс.

В вашем втором примере, при использовании атрибута android:onClick в XML разметке, вы указываете название метода, который будет вызван при нажатии на кнопку. Метод butHello_Click в данном случае должен быть объявлен в коде активности и иметь определенную сигнатуру, принимая на вход View объект. Таким образом, вы привязываете метод к обработке события нажатия на кнопку.

Таким образом, в обоих случаях вы определяете обработчик события нажатия на кнопку, однако в первом случае вы делаете это через анонимный класс, реализующий интерфейс, а во втором случае вы привязываете метод к событию напрямую.

Надеюсь, это поможет вам лучше понять разницу между данными двумя подходами. Если у вас остались вопросы - обращайтесь.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 577 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир