Что скрывается за понятием с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
199 +1
0
Ответы
1

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

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

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

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

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

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

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир